我有一个方法从另一个方法检查int读入并将其与其反向进行比较。如果数字相等并因此是回文,则返回true。但是,无论输入的数字是否为回文数,false都会不断返回。
public class Paladin
{
public static void main()
{
boolean valid;
String inputString = JOptionPane.showInputDialog("Enter a number to be reversed: ");
int inputInt = Integer.parseInt(inputString);
valid = isPalindrome(Reverse(inputInt));
if(valid)
JOptionPane.showMessageDialog(null, inputInt + " is a palindrome");
else
JOptionPane.showMessageDialog(null, inputInt + " is not a palindrome");
public static boolean isPalindrome (int number)
{
int undoReverse = 0;
while(number > 0)
{
undoReverse = undoReverse * 10 + number % 10;
number /= 10;
}
if(number == undoReverse)
return true;
else
return false;
}
}
}
答案 0 :(得分:1)
这种情况正在发生,因为您正在修改number
方法中的输入isPalindrome
,如下所述:
number /= 10;
因此你的
if(number == undoReverse)
输入数字不会发生比较,而是使用修改后的数字进行比较。您基本上需要保留此原始数字以进行比较并使用其他变量。试试这个:
public static boolean isPalindrome (int number)
{
int undoReverse = 0;
int inputNumber = number;
while(number > 0)
{
undoReverse = undoReverse * 10 + number % 10;
number /= 10;
}
if(inputNumber == undoReverse)
return true;
else
return false;
}
}
答案 1 :(得分:0)
while
循环在number <= 0
时结束,但您测试number == undoReverse
。您正在修改number
,然后尝试测试修改后的值是否相等。相反,您应该根据undoReverse
的副本计算number
。