检测回文串问题:
对于一个字符串,如果从前向后读和从后向前读都是同一个字符串,则称之为回文串,我们这里的问题是编写一个程序,提示用户输入一个字符串,然后报告该字符串是否是回文串。
我们在编写程序之前要想好如何实现,我们要先判断字符串的第一个字符和最后一个字符是否相等,如果相等检测第二个字符,这个过程持续进行,直到出现不匹配的情况或者串中所有的字符检查完毕。要实现这个想法,我们使用两个名为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
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
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';
}
}
程序正确运行,显示结果。