繁体   English   中英

我的 arraylist 尺寸为零,即使我已经向其中添加了项目

[英]My arraylist size is a zero even though I've added items to the it

所以我尝试查找此错误( Exception in thread "main" java.lang.ArithmeticException: / by zero )并认为下面代码中的 arraylist 大小为零。 我不明白为什么它为零或如何解决它。 它必须对阵列的容量做些什么吗? 我似乎无法弄清楚我的代码有什么问题。

顺便说一句,此代码用于计算 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();    
    }

}

我假设这些行:

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数量的数字添加到 arraylist

我发现了你的问题。

问题出在你的 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;    
}

Output

我的列表 = [4,5]

平均值 = (4 + 5) / 2 (myArray.size())= 4.5

希望它有用!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM