您的位置:首页 > 编程语言 > Java开发

Java语言程序设计(二十二)检测回文串以及进制转换问题

2021-01-22 23:02 344 查看

 检测回文串问题:

      对于一个字符串,如果从前向后读和从后向前读都是同一个字符串,则称之为回文串,我们这里的问题是编写一个程序,提示用户输入一个字符串,然后报告该字符串是否是回文串。

      我们在编写程序之前要想好如何实现,我们要先判断字符串的第一个字符和最后一个字符是否相等,如果相等检测第二个字符,这个过程持续进行,直到出现不匹配的情况或者串中所有的字符检查完毕。要实现这个想法,我们使用两个名为low和high的变量来表示字符串s开始的位置和结尾位置的两个字符,程序清单如下:

package huiwen;

import java.util.Scanner;

/**
 *
 * @author john
 */
public class Huiwen {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a string:");
        String s = input.nextLine();
        if(Huiwen(s))
            System.out.println(s +"is a palindrome");
        else
            System.out.println(s+"is not a palindrome");
    }
    public static boolean Huiwen(String s){
        int low=0;
        int high = s.length()-1;
        while(low<high){
        if(s.charAt(low)!=s.charAt(high))
            return false;
            low++;
            high--;
    }
    return true;
}
}

      程序运行结果如上所示,程序正确运行。

      

      将十六进制转换为十进制:

      程序将提示用户将一个十六进制数作为字符串输入,我们将每个十六进制数转换为一个十进制数的穷举方法大家都明白,我们这次使用一个高效算法,将十六进制的数字转换为十进制数,先设十进制数变量为demicalvalue,它为0,之后将十六进制的每一位数字转换为十进制,之后decimalvalue = decimalvalue*16+转换为十进制的数字,直到最后一位,我们在本次设计中还使用了上一篇文章提到的,将提取出来的每一位字符变为大写,这样即使用户输入小写字母也可以正确输出,程序清单如下:

package sixteentoten;

import java.util.Scanner;

/**
 *
 * @author john
 */
public class Sixteentoten {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a hex number:");
        String hex = input.nextLine();
        System.out.println("The decimal value for hex number"+hex+"is"+hexToDecimal(hex.toUpperCase()));
    }
    public static int hexToDecimal(String hex){
        int decimalvalue = 0;
        for(int i=0;i<hex.length();i++){
            char hexchar = hex.charAt(i);
            decimalvalue = decimalvalue*16+hexCharToDecimal(hexchar);
    }
    return decimalvalue;
}
public static int hexCharToDecimal(char ch){
if(ch>='A'&&ch<='F')
return 10+ch-'A';
else
return ch-'0';
}
}

        程序正确运行,显示结果。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐