為什么加了continue后,最大最小值不變,平均值變了
public class HelloWorld {
? ??
? ? public static void main(String[] args) {
? ? ? ??
// 定義一個(gè)整型數(shù)組,并賦初值
int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
? ? ? ??
int max = nums[0]; // 假定最大值為數(shù)組中的第一個(gè)元素
int min = nums[0]; // 假定最小值為數(shù)組中的第一個(gè)元素
double sum = 0;// 累加值
double avg = 0;// 平均值
? ? ? ??
for (int i = 0; i < nums.length; i++) { // 循環(huán)遍歷數(shù)組中的元素
? ? ? ? // 如果當(dāng)前值大于max,則替換max的值
if(max<nums[i]){
? ?max=nums[i];
? ?continue;
}
? ? ? ? // 如果當(dāng)前值小于min,則替換min的值
? ? ? ? if(min>nums[i]){
? ?min=nums[i];
? ?continue;
}
? ? ? ? // 累加求和
? ? ? ? sum=sum+nums[i];
? ? ? ??
}
avg=sum/nums.length;
? ? ? ??
? ? ? ? // 求平均值
? ? ? ?
? ? ? ??
System.out.println("數(shù)組中的最大值:" + max);
System.out.println("數(shù)組中的最小值:" + min);
System.out.println("數(shù)組中的平均值:" + avg);
}
}
2018-09-22
continue 會(huì)讓程序退出重新開(kāi)始for循環(huán),你這個(gè)語(yǔ)句還沒(méi)運(yùn)行就跳過(guò)了
2018-10-09
首先要知道,Continue是一個(gè)跳出循環(huán)語(yǔ)句的條件,初始時(shí),max和min都是61,第一次比較時(shí)nums「1」為61,if語(yǔ)句都不成立? 所以直接執(zhí)行sum1=61;第二次比較時(shí);nums=23;第一個(gè)if不成立跳過(guò),第二個(gè)語(yǔ)句min=23;交換成功后continue執(zhí)行直接跳出循環(huán),不執(zhí)行sum=sum+nums「i」;以此類(lèi)推會(huì)發(fā)現(xiàn),當(dāng)max或者min交換成功的時(shí)候,sum=sum+nums「i」都是不執(zhí)行的;導(dǎo)致最后sum加和的只有61、13、20.最后算平均值的時(shí)候也只有這三個(gè)值的加和除所有數(shù)的個(gè)數(shù) ,結(jié)果就非常小了。
(如有錯(cuò)誤,歡迎指正)
2018-09-29
代碼不僅僅是自己看,以后工作會(huì)有小組,大家會(huì)看,能簡(jiǎn)單明了就簡(jiǎn)單明了,if判斷條件合理就會(huì)運(yùn)行內(nèi)部代碼,自然不會(huì)去運(yùn)行下一個(gè),而continue則是跳出當(dāng)前循環(huán),執(zhí)行下一次了,后面的循環(huán)都不會(huì)執(zhí)行,sum變了,平均值當(dāng)然也會(huì)變
2018-09-28
為什么要多此一舉呢,代碼越簡(jiǎn)單越好!
2018-09-22
你把continue語(yǔ)句去掉就行