如何解决即使我已向其添加项目,我的arraylist大小也为零
所以我尝试查找此错误(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();
}
}
解决方法
我假设这些行:
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;
}
输出
myList = [4,5]
平均值=(4 + 5)/ 2(myArray.size())= 4.5
希望它有用!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。