Java I';I’我正试着写回文程序,但我的输出并不像预期的那样
这是我的剧本Java I';I’我正试着写回文程序,但我的输出并不像预期的那样,java,palindrome,Java,Palindrome,这是我的剧本 public class palindrome { public static void main(String[] args) { int rev = 0; Scanner r = new Scanner(System.in); System.out.println("enter any value"); int n = r.nextInt(); while (n != 0) {
public class palindrome {
public static void main(String[] args) {
int rev = 0;
Scanner r = new Scanner(System.in);
System.out.println("enter any value");
int n = r.nextInt();
while (n != 0) {
rev = rev * 10 + n % 10;
n = n / 10;
}
System.out.println(rev);
if (n == rev) {
System.out.println("number is palindrome");
} else {
System.out.println("not palindrome");
}
}
在您的解决方案中,n始终为0
public static boolean isPalindrome(int number) {
int palindrome = number; // copied number into variable
int reverse = 0;
while (palindrome != 0) {
int remainder = palindrome % 10;
reverse = reverse * 10 + remainder;
palindrome = palindrome / 10;
}
// if original and reverse of number is equal means
// number is palindrome in Java
if (number == reverse) {
return true;
}
return false;
}
您应该将n复制到另一个变量中
public static void main(String[] args) {
int rev = 0;
Scanner r = new Scanner(System.in);
System.out.println("enter any value");
int n = r.nextInt();
int original = n;
while (n != 0) {
rev = rev * 10 + n % 10;
n = n / 10;
}
System.out.println(rev);
if (original == rev) {
System.out.println("number is palindrome");
} else {
System.out.println("not palindrome");
}
@用于编辑的NetVipeC。现在可以理解了。在
n=n/10之后插入这一行代码>:System.out.println(“n=“+n+”rev=“+rev”)代码>瞧,你可以看到出了什么问题。顺便说一句,01210是回文,但1210不是。您最好将输入视为字符串。很抱歉,在我的脚本中,While循环是完美的。但它显示的是无效的输出@Giovanni正是我的意思。在循环结束时,n始终为零。