ユーザーに正の整数を繰り返し要求する、センチメンタルな制御された do-while ループを使用するプログラムを作成しようとしています。
ユーザーが負の値を入力すると、ループは終了します。ループが完了した後、プログラムは、ユーザーが入力した正の数値の最小値、最大値、平均値、およびカウントを出力する必要があります。
ただし、プログラムを実行すると、次のエラーが表示されます。
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);
}
}