java for循环嵌套的问题

publicclasstestNestedLoop{publicstaticvoidmain(String[]args){for(inti=0;i<5;i++){for(... public class testNestedLoop
{
public static void main(String[] args)
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++)
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
}
}
}
为什么会提示找不到符号
如果把System.out.println 中 i 与 J 的位置颠倒的话就编译正常
如下
public class testNestedLoop
{
public static void main(String[] args)
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++)
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(j);
System.out.println(i);
}
}
}
java初学者 往高手指点TAT
展开
 我来答
mikemelon
2011-10-11 · TA获得超过4594个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1575万
展开全部
你的内层循环,也就是 for(int j = 0; j < 3; j++) 这个,如果不加括号的话,缺省的循环体指的是下面紧接着的一句,而不是多句,因此你的第一个程序被解释为:
public class testNestedLoop
{
public static void main(String[] args)
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++) {
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
}
System.out.println(j);
}
}
}
因此System.out.println(j);这句的 j在循环体外面,而j在循环体外是没有定义的。

你的第二段程序没错是因为刚好打印j那句紧接着for(int j = 0; j < 3; j++)这句,而i在外层循环体内都是有定义的,所以没错,不过打印出来i只循环了5遍,要想循环5*3遍,还是需要把两个打印语句用大括号括起来。
KaiSoung
2011-10-11 · TA获得超过230个赞
知道小有建树答主
回答量:182
采纳率:100%
帮助的人:83.9万
展开全部
在C#中不是靠缩进来区分代码块的
for(int j = 0; j < 3; j++)
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
你这种写法 在for循环的时候只会执行第一个, 执行完这个for循环的时候才会执行第二行,那时候已经跳出了for(int j = 0; j < 3; j++) 这个循环,也就是跳出了j的作用域,当然会报错了
你应该这么写
for(int j = 0; j < 3; j++){
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czqname
2011-10-11 · TA获得超过224个赞
知道小有建树答主
回答量:139
采纳率:100%
帮助的人:168万
展开全部
第二个 for 循环 需要 把 循环体 包起来 {} ,代码应该如下

public class testNestedLoop
{
public static void main(String[] args)
{
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 3; j++)
{ // 加个 {
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
}// 加个 }
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangni0622
2011-10-11
知道答主
回答量:14
采纳率:0%
帮助的人:2.3万
展开全部
for(int j = 0; j < 3; j++)
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
没有{}
应该将里面的for循环修改成
for(int j = 0; j < 3; j++){
System.out.println/*("i的值为:"+ i +" " +"J的值为:"+ j);*/(i);
System.out.println(j);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-11
展开全部
第二层for循环用{}包起来。没有{}时默认方法体是接下来的第一行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式