java回文怎么测试_Java语言程序设计(二十二)检测回文串以及进制转换问题

本文介绍了如何用Java编写程序检测回文串和将十六进制转换为十进制。通过设置两个指针low和high,遍历字符串判断是否为回文串;使用高效算法将十六进制数转换为十进制,并处理大小写输入。程序已正确运行并展示结果。
摘要由CSDN通过智能技术生成

检测回文串问题:

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

我们在编写程序之前要想好如何实现,我们要先判断字符串的第一个字符和最后一个字符是否相等,如果相等检测第二个字符,这个过程持续进行,直到出现不匹配的情况或者串中所有的字符检查完毕。要实现这个想法,我们使用两个名为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;

}

}

5c7fc947f32b1e8b2a33aed52851d568.png

de208e5589a96257d927cb15e00beb73.png

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

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

程序将提示用户将一个十六进制数作为字符串输入,我们将每个十六进制数转换为一个十进制数的穷举方法大家都明白,我们这次使用一个高效算法,将十六进制的数字转换为十进制数,先设十进制数变量为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';

}

}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值