大神帮看看这段java程序错在哪里。怎么输出1 10 100 1000后就没有了?

2024-11-05 02:03:37
推荐回答(3个)
回答1:

你的j的值在第一次内循环时已经达到了最大值,下次i运行时,j不再运行,因为已经>4,将定义j的代码放到第一层循环中,我标记的位置,就可以实现操作。

public class test {
public static void main(String[] args) {
double s=1;
int i=1;
System.out.print("N");
System.out.print(' ');
System.out.print("10*N");
System.out.print(' ');
System.out.print("100*N");
System.out.print(' ');
System.out.print("1000*N");
System.out.print("\n");
while(i<6){
int j=0; //---------------这里定义j确保每次外循环时j的值都能参与运算。
while(j<4){
s=i*Math.pow(10, j);
System.out.print(String.format("%.0f", s));
System.out.print(' ');
System.out.print(' ');
System.out.print(' ');
j++;
}
System.out.print("\n");

i++;
}
// TODO Auto-generated method stub

}
}

回答2:

while (i < 6) {
j =0; // 这里少了个j的初始化
while (j < 4) {
s = i * Math.pow(10, j);
System.out.print(String.format("%.0f", s));
System.out.print(' ');
System.out.print(' ');
System.out.print(' ');
j++;
}
System.out.print("\n");
i++;
}

不加j=0,第一次循环后,即输出第一行后,j=4

当 i=2时,即准备输出第2行时,j=4,就不会进入下面的循环

while (j < 4) {

......

}


亲,如果回答满意,请及时采纳,你的合作是我回答的动力,谢谢!

回答3:

其实你忘了在内层while循环退出时,给j清零啊.因为j的作用域,所以在j定义后的程序里,它的内存是一直存在的,所以当你第一次while(j<4)后j==4;以后不会在进入这个循环。所以只输出第一次循环的结果。^_^