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

publicclassMyclass{publicstaticvoidmain(String[]args){doubles=1;inti=1;intj=0;System.... public class Myclass {

public static void main(String[] args) {
double s=1;
int i=1;
int j=0;
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){
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

}

}
就是这样的。本来是输出1 10 100 1000然后2 20 200 2000如此这样一直到5 50 500 5000.可是运行后只输出一行就没有了。只输出了1 10 100 1000.求大神解答。
求大神帮看看啊。还没解决呢!
展开
 我来答
百度网友330f355
2015-09-28 · TA获得超过297个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:67万
展开全部
你的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

}
}
百度网友090def6
2015-09-28 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:709万
展开全部
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) {

......

}


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

追问
可是我开头就写了int j=0啊。而且嫁你这句后,出问题了。出来的是1 1 1 1 1 1 然后死循环了。麻烦您再帮我看看
追答
不可能呀,我测试了没有问题
把代码贴出来

刚看了你的代码,没有问题呀
while(i<6){
int j=0; //---------------这里定义j确保每次外循环时j的值都能参与运算。
while(j<4){

这样是对的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一只安静的abc
2015-09-28
知道答主
回答量:15
采纳率:0%
帮助的人:7.4万
展开全部
其实你忘了在内层while循环退出时,给j清零啊.因为j的作用域,所以在j定义后的程序里,它的内存是一直存在的,所以当你第一次while(j<4)后j==4;以后不会在进入这个循环。所以只输出第一次循环的结果。^_^
追问
怎么清零?麻烦赐教
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式