乾坤龙心
2015-02-22 02:18
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这样用不会报错吗?
Java入门第一季(IDEA工具)
1168747 学习 · 18758 问题
相似问题