题目描述
编写一个方法isPalindrome(),参数为一个5位以内的自然数,它判断该数是否为回文数,并根据判断结果返回布尔类型的值。
然后,在main方法中循环输入一个5位数以内的自然数,如果输入的自然数超过5位,则输出“input error”,否则,调用isPalindrome(),并根据方法的返回值输出“XXXXX是/不是回文数”,直到输入一个负数为止。
回文数是指正序(从左至右)和逆序(从右至左)都相同的数,如303、42124和3223。
输入描述
一行以负数结尾的自然数,中间用空格分开
输出描述
每个自然数占一行:XX是回文数 或者 XX不是回文数 或者 input error
输入样例
29 454 11 12321 0 234512 999 -1
输出样例
29不是回文数
454是回文数
11是回文数
12321是回文数
0是回文数
input error
999是回文数
这是经典的回文问题,楼主可以参考我的博客:https://blog.csdn.net/zhanglide0526/article/details/120754067?spm=1001.2014.3001.5502
代码如下,望楼主采纳
public static void main(String[] args) {
System.out.println("请输入整数:");
Scanner scan = new Scanner(System.in);
String num = scan.nextLine();
String[] str = num.split("\\s+");//以空格分隔
for (String s : str) {
if(Integer.valueOf(s)<0){
break;
}
if(s.length()>5){//如果大于5位数则提示并跳过当次循环
System.out.println("input error");
continue;
}
if(!isPalindrome(s)){//方法返回值为false则不是回文数
System.out.println(s + "不是回文数");
}else{
System.out.println(s + "是回文数");
}
}
}
//该方法用于判断是否是回文数
private static boolean isPalindrome(String str) {
for (int i = 0; i < str.length() - i - 1; i++){
if(str.charAt(i) == str.charAt(str.length() - i - 1)){
continue;
}else{
return false;
}
}
return true;
}
请输入整数:
29 454 11 12321 0 234512 999 -1
29不是回文数
454是回文数
11是回文数
12321是回文数
0是回文数
input error
999是回文数