【发布时间】:2019-07-04 00:07:17
【问题描述】:
这是我第一次提出问题,我尝试先搜索现有线程。我的程序旨在要求用户输入一个 5 位数字,它会通过反转数字然后将原始数字与反向数字进行比较来检查它是否是回文。如果号码长于或短于 5 位数,我还在那里进行了一些验证步骤以拒绝该号码。一切似乎都有效,直到它到达比较原始数字和反转数字的部分。这是我的代码:
import java.util.Scanner;
public class Palindromes {
public static void main(String args[]) {
int n, reverse = 0;
System.out.println("Enter a 5-digit integer to see if it is a palindrome.");
Scanner in = new Scanner(System.in);
n = in.nextInt();
int length = String.valueOf(n).length();
while (length > 5 || length < 5) {
System.out.println("Error: integer must be 5 digits in length.");
System.out.println("Enter a 5-digit integer.");
n = in.nextInt();
length = String.valueOf(n).length();
}
while (length == 5 && n != 0) {
reverse = reverse * 10;
reverse = reverse + n % 10;
n = n / 10;
}
System.out.println("Reversed number is: " + reverse);
if (n == reverse) {
System.out.println("Congratulations! Your number is a palindrome!");
} else {
System.out.println("Sorry. Your number isn't a palindrome.");
}
}
}
【问题讨论】:
-
"在比较原始数字和反向数字的部分之前,一切似乎都有效。"那么在什么方面不起作用呢?你能举一个具体的例子来说明会发生什么和你期望会发生什么吗?提示:您刚刚编写了一个仅在
n为0 时才会终止的循环。您正在循环中修改n。然后您将n与reverse进行比较...(您可能需要复制原始号码...) -
这是磨练调试技能的好时机。在循环之前、内部和之后放置一些断点或
println语句,然后观察会发生什么。调试是一项重要的学习技能。
标签: java int comparison-operators