Java ArrayList - 错误

标签 java

我的代码应该从用户那里获取一系列数字,没有限制,直到用户输入负数来取消。然后它给出以下输出: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/

相关文章:

java - Spring Cloud Contract - 如何在 .yaml 文件中传递 "+"(加号)作为查询参数

java - 未显示选定的 Spinner 数据

java - 我可以单独使用 @GenericGenerator 而不使用 @GenerateValue 吗?

java - 现在写一个java spring web服务客户端服务

java - CQ 5.5 i18n 和接受语言 header

java - 为什么我的第一个应用程序没有出现在我的手机上?

java - Android 后台任务计算量大

java - url 索引查询中的非法字符

java - 检测超时的 Callable 实例

java - 包含 Apache POI 时的 Android 重复类错误