[英]My arraylist size is a zero even though I've added items to the it
So I tried looking up this error ( Exception in thread "main" java.lang.ArithmeticException: / by zero
) and figured that my arraylist size in the code below is zero.所以我尝试查找此错误(
Exception in thread "main" java.lang.ArithmeticException: / by zero
)并认为下面代码中的 arraylist 大小为零。 I can't understand why it is zero or how to solve it.我不明白为什么它为零或如何解决它。 Does it have to do something with the capacity of the array?
它必须对阵列的容量做些什么吗? I can't seem to figure out what's wrong with my code.
我似乎无法弄清楚我的代码有什么问题。
Btw, this code is for computing the average of all the elements in an arraylist and letting the user know what the average is.顺便说一句,此代码用于计算 arraylist 中所有元素的平均值,并让用户知道平均值是多少。
I'm still a beginner at Java so I apologize if this may seem silly.我仍然是 Java 的初学者,所以如果这看起来很愚蠢,我深表歉意。 Any help is appreciated!
任何帮助表示赞赏!
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();
}
}
I'm assuming the lines:我假设这些行:
System.out.println("Please enter a number: ");
userInput = scan.nextInt();
gets the amount of elements you want to add to the arraylist, which we later add to the list through the for loop.获取要添加到 arraylist 中的元素数量,我们稍后通过 for 循环将其添加到列表中。 In that case keep it in another variable called
list_length
, since userInput
constantly changes in the for loop.在这种情况下,将其保存在另一个名为
list_length
的变量中,因为userInput
在 for 循环中不断变化。
System.out.println("Please enter a number: ");
list_length = scan.nextInt();
Then change the for loop after this input to something like:然后将此输入后的 for 循环更改为:
for(int i = 1; i <= list_length; i++) {
userInput = scan.nextInt();
myArray.add(userInput);
}
This is because you changed the end of the for loop to myArray.size()
, but remember that it was already 0, so the for loop ends since 1 >= 0
.这是因为您将 for 循环的结尾更改为
myArray.size()
,但请记住它已经是 0,因此 for 循环从1 >= 0
开始结束。 What you probably wanted to do was to add list_length
amount of numbers into the arraylist您可能想要做的是将
list_length
数量的数字添加到 arraylist
I found your problem.我发现了你的问题。
The problem was your for loop because somehow the arrayList didn't catch any of the elements during the loop.问题出在你的 for 循环上,因为 arrayList 在循环期间没有捕捉到任何元素。
I also made some adjustment for the method so it counts the average correct.我还对该方法进行了一些调整,以便计算平均值。
Here's an example这是一个例子
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 Output
myList = [4,5]我的列表 = [4,5]
average = (4 + 5) / 2 (myArray.size())= 4.5平均值 = (4 + 5) / 2 (myArray.size())= 4.5
Hope it was useful!希望它有用!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.