大神帮看看这段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.求大神解答。
求大神帮看看啊。还没解决呢! 展开
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.求大神解答。
求大神帮看看啊。还没解决呢! 展开
3个回答
展开全部
你的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
}
}
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
}
}
展开全部
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){
这样是对的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实你忘了在内层while循环退出时,给j清零啊.因为j的作用域,所以在j定义后的程序里,它的内存是一直存在的,所以当你第一次while(j<4)后j==4;以后不会在进入这个循环。所以只输出第一次循环的结果。^_^
追问
怎么清零?麻烦赐教
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询