【发布时间】:2015-01-13 07:48:23
【问题描述】:
我有这段代码,其中有两个循环“i”和“j”。
'j' 是内循环变量,它应该在外循环单次运行时运行 999 到 100。
但它随机运行, 假设 i=999
j=912
j=911
j=910
j=909
j-908
j=907
j=906
然后突然内循环退出,从外循环减1并使i=998
然后开始'j'循环
j=908
j=907
j=906
j=905
j=906
j=905
j=904
j=903
j=902
然后退出内循环......
int product=0;
mainloop:
for(int i=999;i>99;i--){
for(int j=999;j>99;j--){
boolean flag= doSomething(i*j);
if(flag){
product=i*j;
System.out.println("Digits are: "+i+" and "+j);
break mainloop;
}
}
}
public boolean doSomething(int product){
String original= Integer.toString(product),reverse="";
int length = original.length();
for ( int i = length - 1; i >= 0; i-- )
reverse = reverse + original.charAt(i);
return (original.equals(reverse));
}
为什么会这样?为什么内循环没有完成从 999 到 100 的循环?
编辑:要清楚,'flag' 仅在 j=913 和 i=993 时为真,这是循环不会中断的主要问题,因为 'j' 永远不会来到 913 但它随机生成数字。此外,'break' 不仅会破坏内部循环,还会破坏主循环。
【问题讨论】:
-
查看doSomething中的代码。那应该清除它
-
你在
if结束时明确地打破它并回到主循环...... -
你能显示
doSomething的代码吗?
标签: java loops logic nested-loops