很简单的java问题,一时想不通,请高人指点

import java.util.*;
public class test {
public static void main(String[] args){

for(int i=0;i<100;i++){
for(int j=0;j<50;j++){
if(i+j==100)System.out.println(i+"+"+j+"=100");
break;}
}
}
}
我只想输出51+49=100;为什么这样什么也没输出!

public class Test {
 public static void main(String[] args){

for(int i=0;i<100;i++){
  for(int j=0;j<50;j++){
   if(i + j==100){
   System.out.println(i+"+"+j+"=100");
   return;
   }
   
   }
  }
 }
 }

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-01
break;放的位置不对,你是想让 输出了51+49=100 以后中断 break;
但是现在的情况是执行到了i=51 了,j=0,不满足 if(i+j==100) 直接break了,进入外层的下一个循环了,i+1了。i=52了,永远也不会出现 j=49的情况。
第2个回答  推荐于2016-05-21
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 50; j++) {
if (i + j == 100) {
System.out.println(i + "+" + j + "=100");
break;
}
}
}

}
if后面漏了一对大括号,导致j循环变成了死代码追问

你的代码运行后是这个样子,而我只需要第一行

追答

那句break只能对内层for起作用,如果要跳出双重循环,就要用状态变量来控制了,如果后面没有语句需要执行的话,也可以用return跳出main方法
public static void main(String[] args) {
boolean finish = false;

for (int i = 0; i < 100; i++) {
for (int j = 0; j < 50; j++) {
if (finish) {
break;
}

if (i + j == 100) {
System.out.println(i + "+" + j + "=100");
finish = true;
break;
}
}
}
}

本回答被提问者采纳
第3个回答  2014-08-01
break的用法,有问题;

break如果在循环语句中执行那么意思是退出这整循环。
for(int j=0;j<50;j++){
if(i+j==100)System.out.println(i+"+"+j+"=100");
break;}
}

那么j=0执行了一次之后,就不再执行j=1的循环了

可以改为continue,这个是只是退出这一次循环。
for(int j=0;j<50;j++){
if(i+j==100)System.out.println(i+"+"+j+"=100");
continue;
System.out.println("continue");
}
}
那么j=0执行了后还会执行j=1 =2等循环,只是不会再执行continue后面的语句System.out.println("continue");

当然你这里也可以直接去掉break语句
for(int j=0;j<50;j++){
if(i+j==100)System.out.println(i+"+"+j+"=100");
}
}
第4个回答  2014-08-01
你这里
if(i+j==100)System.out.println(i+"+"+j+"=100");
break;
相当于每次j==0时,循环都会break;也就是说 i循环了100次,每次都是j==0,j的循环就已经终止了,建议写代码时候不要省略{},个人觉得这是一个很不好的习惯。当你不写这个括号时,if里面的代码块默认只包括它后面的第一个分号前面的语句,这里这样写就能够达到你的要求了
if(i+j==100){
System.out.println(i+"+"+j+"=100");
break;
}
加上{}追问

修改过后就是这个,而我只要51+49=100.

相似回答