public class A{
public static void main(String[] args) {
int a;
int b;int c=0;
for(a=100;a<=999;a++){
for(b=100;b<=999;b++){
int n=a*b;
int temp=n;
while(n>0){
int r=n%10;
c=(c*10)+r;
n=n/10;
}
if(temp==c){
System.out.println(c);
}
}
}
}
}
代码编译得很好但是在运行它时只是跳过所有内容并退出。请帮忙。 附:问题4 ProjectEuler
答案 0 :(得分:2)
首先让格式化代码以便轻松阅读:
public class A {
public static void main(String[] args) {
int a;
int b;
int c = 0;
for (a = 100; a <= 999; a++) {
for (b = 100; b <= 999; b++) {
int n = a * b;
int temp = n;
while (n > 0) {
int r = n % 10;
c = (c * 10) + r;
n = n / 10;
}
if (temp == c) {
System.out.println(c);
}
}
}
}
}
现在我们注意到,让我们远离main方法中的print语句的唯一块是两个for循环和一个if statemet。
检查这两个循环,它们没有明显的错误,所以我们将它们排除在外,剩下的就是if语句。此时我们可以假设temp
永远不等于c
。
如果你不能仅仅通过查看代码来追踪为什么不满足这个条件,你可以使用print语句进行一些简单的debuging(例如,在if之前打印变量c和temp,以便直观地检查它们的值)或者使用例如,您可以在IDE上找到一些更高级的debuging工具。
有关调试的指南:
How to debug a Java program without using an IDE?
http://www.vogella.com/tutorials/EclipseDebugging/article.html
答案 1 :(得分:1)
由于ourtime
为temp==c