我的代码应该从用户那里获取一系列数字,没有限制,直到用户输入负数来取消。然后它给出以下输出:1)数组中最小的数字2)数组中最大的数字3)数组中所有数字的平均值。当输入负数时,它会给我一个越界异常。
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class largeSmallAverage {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Initialize array and variables
List<Integer> userNumbers = new ArrayList<Integer>();
double sum, average;
sum = 0;
average = 0;
int i, j, counter;
i = 0;
j = 0;
counter = 0;
//Ask for input
System.out.println("Please enter a series of numbers that you would like the average of, enter a negative number to end input");
Scanner scan = new Scanner(System.in);
//do while loop until a negative number is entered
do {
System.out.println("Please enter a number");
i = scan.nextInt();
userNumbers.add(i);
counter++;
} while ( i >= 0);
// Sort Array
Collections.sort(userNumbers);
// Get Average
for (j = 0; j < counter; j++)
sum = sum + userNumbers.get(j);
average = sum/counter;
System.out.println("Minumum Number: " + userNumbers.get(0));
System.out.println("Maximum Number: " + userNumbers.get(counter));
System.out.println("Average: " + average);
}
}
最佳答案
问题不在于最小数部分。
问题是您在获取列表的最后一个元素时使用的计数器的索引。
列表的最后一个元素是 length-1。
System.out.println("Maximum Number: " + userNumbers.get(counter-1));
关于Java ArrayList - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40088412/