import java.util.Arrays;public class OL { public static void main(String[] args){ int j=1; int [] nums={89,-23,64,91,1819,818,55,152,713}; Arrays.sort(nums); for (int i=nums.length-1; i>=0; i--){ if ((nums[i]>=0)&&(nums[i]<=100)){ j++; if(j>3){ break; } } System.out.println(nums[i]); } }}
2 回答
已采纳
美得像一个遗憾
TA贡献2条经验 获得超4个赞
break跳出的是离它最近的一个循环,这个程序中,离break最近的循环是if循环,而不是for循环,所以if循环跳出后,for循环依然在工作。
解决方法是:把
System.out.println(nums[i]);
移到上一个 } 里面,这样继续执行的for循环执行的是空语句。
当然解决的方法还有很多,楼主这里出现的问题是不了解break的终止循环的范围。
import java.util.Arrays; public class OL{ public static void main(String[] args){ int j=1; int [] nums={89,-23,64,91,1819,818,55,152,713}; Arrays.sort(nums); for (int i=nums.length-1; i>=0; i--){ if ((nums[i]>=0)&&(nums[i]<=100)){ j++; if(j>3){ break; } //这是你希望得到的结果 System.out.println("nums[i]:"+nums[i]); } //实际输出的结果 System.out.println(nums[i]); } } }
冲啊
TA贡献15条经验 获得超3个赞
你把if(j>3){break;}单独放在ystem.out.println(nums[i]);前面,不要放在if条件 里,即:
if ((nums[i]>=0)&&(nums[i]<=100)){
j++;
}
if(j>3){
break;
}
这样的话,检没到j>3即退出FOR循环
添加回答
举报
0/150
提交
取消