![](/img/trans.png)
[英]I've added things into my ArrayList but still not working for loop, and function
[英]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.