我的arraylist大小是零,即使我已经向它添加了项

n6lpvg4x  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(336)

所以我试着查这个错误( Exception in thread "main" java.lang.ArithmeticException: / by zero )我发现下面代码中的数组列表大小是零。我不明白为什么它是零或者怎么解决它。它是否与阵列的容量有关?我似乎不知道我的代码出了什么问题。
顺便说一句,这段代码用于计算arraylist中所有元素的平均值,并让用户知道平均值是多少。
我还是java的初学者,所以如果这看起来很愚蠢,我很抱歉。感谢您的帮助!

import java.util.*;
public class ClassStuff {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        ArrayList <Integer> myArray = new ArrayList <Integer> ();
        int userInput = 0;
        String userConf = "";

        while ((!userConf.equalsIgnoreCase("y"))) {

            System.out.println("Please enter a number: ");
            userInput = scan.nextInt();

            for (int i = 1; i <= myArray.size(); i++) {
                userInput = scan.nextInt();
                myArray.add(userInput);
            }

            scan.nextLine();
            System.out.println("Are you done entering numbers? (y/n): ");
            userConf = scan.nextLine();

        }

        int result = computeAvg(myArray);

        System.out.println("Average is: " + result);
    }

    public static int computeAvg(List <Integer> myArray) {
        int sum = 0;
        int avg = 0;

         for (int i = 0; i < myArray.size(); i++) {               
              sum = sum + myArray.get(i);
         }

         return avg = sum/myArray.size();    
    }

}
pqwbnv8z

pqwbnv8z1#

我假设是这样的:

System.out.println("Please enter a number: ");
userInput = scan.nextInt();

获取要添加到arraylist的元素数量,稍后我们将通过for循环将其添加到列表中。在这种情况下,将其保存在另一个变量中,称为 list_length ,自 userInput for循环中不断变化。

System.out.println("Please enter a number: ");
list_length = scan.nextInt();

然后将此输入后的for循环更改为如下内容:

for(int i = 1; i <= list_length; i++) {
    userInput = scan.nextInt();
    myArray.add(userInput);
}

这是因为您将for循环的结尾改为 myArray.size() ,但请记住,它已经是0,因此for循环结束 1 >= 0 . 你可能想加上 list_length 数组列表中的数字量

mccptt67

mccptt672#

我发现了你的问题。
问题是for循环,因为arraylist在循环过程中没有捕获任何元素。
我还对这个方法做了一些调整,使它计算出正确的平均值。
下面是一个例子

public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    ArrayList <Integer> myArray = new ArrayList<>();
    int userInput = 0;
    String userConf = "";

    while ((!userConf.equalsIgnoreCase("y"))) {
        System.out.println("Please enter a number: ");

        userInput = scan.nextInt();
        myArray.add(userInput);

        scan.nextLine();
        System.out.println("Are you done entering numbers? (y/n): ");
        userConf = scan.nextLine();
    }

    System.out.println(myArray);
    double result = computeAvg(myArray);

    System.out.println("Average is: " + result);
}

public static double computeAvg(List <Integer> myArray) {
    double sum = 0;
    double avg = 0;

     for (int i = 0; i < myArray.size(); i++) {               
          sum = sum + myArray.get(i);
     }
     avg =  sum / myArray.size();
     return avg;    
}

输出
mylist=[4,5]
平均值=(4+5)/2(myarray.size())=4.5
希望有用!

相关问题