我正在嘗試編寫一個程序,該程序使用了一個sentine控制的do-while循環,該循環反覆詢問用戶正整數。處理用戶輸入時ArrayList IndexOutOfBoundsException
當用戶輸入負值時,循環應該結束。循環結束後,程序應打印出用戶輸入的正數的最小值,最大值,平均值和計數值。
然而,當我運行程序時,我得到的錯誤:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at posNeg.main(posNeg.java:31)
...我已經尋找答案,但他們都不是工作。大多數人建議從for (int i = 0; i <= (count); i++) {
中刪除=
。
總之,這裏是全碼:
import java.util.*;
import java.lang.Math;
public class posNeg {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList list = new ArrayList();
int num;
int count = 0;
do{
System.out.println("enter pos nums (or a neg num to quit): ");
num = sc.nextInt();
list.add(num);
count++;
} while (num >= 0);
Iterator it = list.iterator();
list.remove(list.get(count-1));
Object max = Collections.max(list);
Object min = Collections.min(list);
System.out.print(list);
int tot = 0;
for (int i = 0; i <= (count); i++) {
Object piece = list.get(i);
int piecenum = ((Number) piece).intValue();
tot = tot + piecenum;
}
double avg;
avg = tot/count;
System.out.println("the max is "+max+". the min is "+min+". the avg is "+avg);
}
}
「大多數人只是建議刪除'='」...試試吧。 – Vulcan
當你遵循這個建議時會發生什麼? –