我写了这个:
class Problem4 {
public static void main(String[] args) {
int reversenum = 0;
for (int i=100; i<1000; i++) {
for (int j=100; j<1000; j++) {
int tempPro = i*j;
int temptempfun = tempPro;
while (tempPro != 0) {
reversenum *= 10;
reversenum += tempPro%10;
tempPro /= 10;
}
if (reversenum == temptempfun) {
System.out.println(reversenum);
}
}
}
}
}
我运行时没有得到任何输出,我无法弄清楚我做错了什么。
修改
通过在内部for循环中移动reversenum声明来修复它。
class Problem4 {
public static void main(String[] args) {
int largest = 0;
for (int i=100; i<1000; i++) {
for (int j=100; j<1000; j++) {
int tempPro = i*j;
int temptempfun = tempPro;
int reversenum = 0;
while (tempPro != 0) {
reversenum *= 10;
reversenum += tempPro%10;
tempPro /= 10;
}
if (reversenum == temptempfun) {
if (reversenum > largest) {
largest = reversenum;
}
}
}
}
System.out.println(largest);
}
}
答案 0 :(得分:3)
两个整数reversenum和temptempfun在你的循环中并不相等。这就是为什么,它无法打印任何东西。
答案 1 :(得分:0)
在这一行:
int reversenum = 0;
你将reversenum定义为零并且在while循环中:
while (tempPro != 0) {
reversenum *= 10;
您尝试将数字乘以零并再次将其分配给此变量。可能的问题在于这个逻辑。您应该为reversenum
提供非零的初始值,并且应该在while循环之前清除它,因为reversenum
变量将存储上一次迭代的值。
修改强>
您需要在Eclipse(如Eclipse)中调试代码。如果您这样做,那么您可以轻松了解代码中发生了什么。
答案 2 :(得分:0)
很明显reversenum
试图扭转数量(检查回文),因此每次都需要改变(不受先前尝试的影响)。
此外,将其乘以0,当它为零时将保持为零。
这将打印一些东西(但你需要考虑如何找到你真正需要的答案)。
class Problem4 {
public static void main(String[] args) {
for (int i=100; i<1000; i++) {
for (int j=100; j<1000; j++) {
int reversenum = 0; //<- moved to change each time
int tempPro = i*j;
int temptempfun = tempPro;
while (tempPro != 0) {
reversenum *= 10;
reversenum += tempPro%10;
tempPro /= 10;
}
if (reversenum == temptempfun) {
System.out.println(reversenum);
}
}
}
}
}