问答详情
源自:6-6 编程练习

用的while,相对于if哪个好?

public class HelloWorld {
    
    public static void main(String[] args) {
        
		// 定义一个整型数组,并赋初值
		int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
        
		int max = nums[0]; // 假定最大值为数组中的第一个元素
		int min = nums[0]; // 假定最小值为数组中的第一个元素
		double sum = 0;// 累加值
		double avg = 0;// 平均值
        
		for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
        // 如果当前值大于max,则替换max的值
		while(nums[i]>max){
    	 max=nums[i];   
		}
        // 如果当前值小于min,则替换min的值
        while(nums[i]<min){
        min=nums[i];
        }
        
        
        // 累加求和
        sum=sum+nums[i];
        
		}
        
        // 求平均值
       avg=sum/nums.length;
        
		System.out.println("数组中的最大值:" + max);
		System.out.println("数组中的最小值:" + min);
		System.out.println("数组中的平均值:" + avg);
	}
}


提问者:乾坤龙心 2015-02-22 02:18

个回答

  • 放学路上的小学生
    2015-04-19 11:52:16

    进入for循环之后,如果直接用if语句:

    if(nums[i]>max){

            max=nums[i];   

    }

    运行到这里的时候,直接跳入下一段代码。

    而采用你的while语句

     while(nums[i]>max){

             max=nums[i];   

            }

    运行完一遍,会回去再做一次while条件判断。

    其实外面有了for语句来遍历,这里再回去做判断没有必要,多消耗了性能。


  • Lee_Y
    2015-02-27 17:24:52

    这个代码应该不存在while相比if哪个好还是不好,把while循环放到内循环没有意义呀。假设你断点,外循环for走第一圈是nums[0] = 61这个值进入内循环while里面,只有一个值和max对比,使用if就可以了,没有多个值需要循环做对比,所以这里加入内循环有点突兀,我感觉还影响性能,尽管这只是个Demo

  • sadfasdfas
    2015-02-26 02:22:37

    你这是一个死循环

  • 我不懂public
    2015-02-22 15:40:48

    for是一个循环,while也是进行循环判断的,不过while这样用不会报错吗?