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); } }
进入for循环之后,如果直接用if语句:
if(nums[i]>max){
max=nums[i];
}
运行到这里的时候,直接跳入下一段代码。
而采用你的while语句
while(nums[i]>max){
max=nums[i];
}
运行完一遍,会回去再做一次while条件判断。
其实外面有了for语句来遍历,这里再回去做判断没有必要,多消耗了性能。
这个代码应该不存在while相比if哪个好还是不好,把while循环放到内循环没有意义呀。假设你断点,外循环for走第一圈是nums[0] = 61这个值进入内循环while里面,只有一个值和max对比,使用if就可以了,没有多个值需要循环做对比,所以这里加入内循环有点突兀,我感觉还影响性能,尽管这只是个Demo
你这是一个死循环
for是一个循环,while也是进行循环判断的,不过while这样用不会报错吗?