为了账号安全,请及时绑定邮箱和手机立即绑定

出什么问题了

出什么问题了

乱也 2016-06-09 22:20:39
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]);
		}
	}
}


查看完整回答
1 反对 回复 2016-06-09
  • 乱也
    乱也
    为什么前面的条件都不成立了?
  • 美得像一个遗憾
    美得像一个遗憾
    什么条件不成立?break是强制跳出循环,不管前面的条件成不成立。你可以用 断点调试 调试你的代码,或者用打印的方式调试。
?
冲啊

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循环

查看完整回答
反对 回复 2016-06-11
  • 2 回答
  • 0 关注
  • 1570 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信