求解java循环代码
longa,b,c,d;for(a=1;a<99;a++){b=a*a;if(b%10==a){System.out.println(a+""+b);}}for(c=99...
long a,b,c,d;
for(a=1;a<99;a++){
b=a*a;
if(b % 10 ==a){
System.out.println(a+" "+b);
}
}
for(c=99;c<999;c++){
d=c*c;
if(d % 100==c){
System.out.println(d+" "+c);
}
}
问题是:
运行起来以后,只执行了第一个for语句,没有执行第二个!
1、请问原因是什么!
2、一段代码里,同级的for循环或者其他类型的循环都是只执行第一个该类型循环吗? 展开
for(a=1;a<99;a++){
b=a*a;
if(b % 10 ==a){
System.out.println(a+" "+b);
}
}
for(c=99;c<999;c++){
d=c*c;
if(d % 100==c){
System.out.println(d+" "+c);
}
}
问题是:
运行起来以后,只执行了第一个for语句,没有执行第二个!
1、请问原因是什么!
2、一段代码里,同级的for循环或者其他类型的循环都是只执行第一个该类型循环吗? 展开
12个回答
展开全部
分别回答
1、这段代码在我的电脑上能正确运行,第二个for正确执行,只不过没有一次能执行到打印的语句,原因是这900次循环中没有一次找到符合该条件的c,给你造成的错觉就是没执行,建议在第二个for循环体中加一句System.out.println(c);,你就能非常清晰的看到,第二个for语句是没闲着的。
2、如果第一个问题解决了,这个误解就自然消除了。
建议:对于编程人员而言,成长和学习中,必须掌握的一项重要的能力——排错,错误有编译出错、系统出错和程序逻辑出错。对于前两者系统(Java编译器和虚拟机)会很贴心的显示打印出并且会给你定位到具体的行数,而逻辑出错对于系统是不可控的,只有你自己排除了。最为初级的排错方法就是使用打印语句System.out.println(),怀疑哪儿不对劲就print哪儿。更高级就是debug和Junit,不过显然你还用不到的。
1、这段代码在我的电脑上能正确运行,第二个for正确执行,只不过没有一次能执行到打印的语句,原因是这900次循环中没有一次找到符合该条件的c,给你造成的错觉就是没执行,建议在第二个for循环体中加一句System.out.println(c);,你就能非常清晰的看到,第二个for语句是没闲着的。
2、如果第一个问题解决了,这个误解就自然消除了。
建议:对于编程人员而言,成长和学习中,必须掌握的一项重要的能力——排错,错误有编译出错、系统出错和程序逻辑出错。对于前两者系统(Java编译器和虚拟机)会很贴心的显示打印出并且会给你定位到具体的行数,而逻辑出错对于系统是不可控的,只有你自己排除了。最为初级的排错方法就是使用打印语句System.out.println(),怀疑哪儿不对劲就print哪儿。更高级就是debug和Junit,不过显然你还用不到的。
展开全部
你这段代码不全,具体原因不太清楚,同级的for循环
会按照先后顺序进行执行的。把代码贴的全一点,更
有利于分析。
会按照先后顺序进行执行的。把代码贴的全一点,更
有利于分析。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是因为你第二个循环没有一个满足条件的。。。
d % 100 结果肯定小于100
c在循环中除了第一次是99以外,之后都是100以上的,怎么可能相等呢。
d % 100 结果肯定小于100
c在循环中除了第一次是99以外,之后都是100以上的,怎么可能相等呢。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个for肯定执行了,可能只是d % 100==c不满足所以没有输出,你这样验证有没有执行第二个for:
for(c=99;c<999;c++){
d=c*c;
System.out.println(“这里是第二个for循环第”+(c-98)+"次");
if(d % 100==c){
System.out.println(d+" "+c);
}
}
for(c=99;c<999;c++){
d=c*c;
System.out.println(“这里是第二个for循环第”+(c-98)+"次");
if(d % 100==c){
System.out.println(d+" "+c);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二个for 循环执行了
for (c = 99; c < 999; c++) {
System.out.println("aaaaaa");
d = c * c;
if (d % 100 == c) {
System.out.println("2:" + d + " " + c);
}
}
你打印个语句 ,d % 100 == c 这个不可能为true,一直未false
for (c = 99; c < 999; c++) {
System.out.println("aaaaaa");
d = c * c;
if (d % 100 == c) {
System.out.println("2:" + d + " " + c);
}
}
你打印个语句 ,d % 100 == c 这个不可能为true,一直未false
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
谁说没有执行第二个循环,执行了,只是你不知道而已, 你为什么不知道呢?因为, 在第二个循环中的System.out.println(d+" "+c);这语没有被执行,因为d % 100==c 在整个循环过程中,不成立。
想知道第二循环有没有执行很简单,在d=c*c;语句的下面执行一条输出语句如:System.out.println("=================");,就可以证明了,这条语句将被反复输出!!!
想知道第二循环有没有执行很简单,在d=c*c;语句的下面执行一条输出语句如:System.out.println("=================");,就可以证明了,这条语句将被反复输出!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询