Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ArrayList Java-大小为零_Java_Arraylist - Fatal编程技术网

ArrayList Java-大小为零

ArrayList Java-大小为零,java,arraylist,Java,Arraylist,我的程序(包括在下面)不断出现这样一个错误,列表大小为零,这会把其他一切都搞糟。我猜这意味着我没有正确地添加元素,但我无法找出它有什么问题。我在技术上遇到了挑战,所以我很抱歉这不是正确的格式。谢谢你的帮助 import java.util.Scanner; import java.util.ArrayList; public class ListStat { public static void main (String[] args) { ListStat r = ne

我的程序(包括在下面)不断出现这样一个错误,列表大小为零,这会把其他一切都搞糟。我猜这意味着我没有正确地添加元素,但我无法找出它有什么问题。我在技术上遇到了挑战,所以我很抱歉这不是正确的格式。谢谢你的帮助

import java.util.Scanner;
import java.util.ArrayList;
public class ListStat {
    public static void main (String[] args) {
        ListStat r = new ListStat();
        System.out.println("A default list was created." + r.toString());
        ListStat r1 = new ListStat(30);
        System.out.println("Another list was created." + r1.toString());
        ListStat r2 = new ListStat(40);
        System.out.println("Another list was created." + r2.toString());
        r1.add(4); 
        System.out.println("The item at index 13 for r1 is: " + r1.get(13));
        System.out.println("r1 and r2 are equal: " + r1.equals(r2));
        System.out.println("r1 and r2 overlap this number of times: " + r1.countOverlap(r1, r2));
    }

private ArrayList<Integer> list;

public ListStat() {
list = new ArrayList<Integer>();
}

public ListStat(int N) {
list = new ArrayList<Integer>(N);
for (int i=0; i<N; i++) {
    list.add(i, i+1);
}
}

public void add(int num) {
list.add(num);
}

public int get(int index) {
return list.get(index);
}

public int getListLength(){
return list.size();
}

public double getMean() {
int sum = 0;
for (int i=0; i<list.size(); i++) {
    sum = sum + list.get(i);
}
double mean = sum/list.size();
return mean;
}

public int getSum() {
int sum = 0;
for (int i=0; i<list.size(); i++) {
    sum = sum + list.get(i);
}
return sum;
}

public boolean equals(ListStat r) {
if (r.equals(list))
return true;
else
return false;
}

public static int countOverlap(ListStat r1, ListStat r2) {
int count = 0;
for (int i=0; i<r1.getListLength(); i++) {
    for (int j=0; j<r2.getListLength(); j++) {
        if (r1.get(i)==r2.get(j)) {
            count++;
        }
    }
}
return count;
}

public double getStdDev() {
int sum = 0;
double standardDev = 0.0;
for (int i=0; i<list.size(); i++) {
    sum = sum + list.get(i);
}
double mean = sum/list.size();
double standsum=0;
for (int i=0; i<list.size(); i++) {
    standardDev = (list.get(i) - mean) * (list.get(i) - mean);
    standsum=standsum+standardDev;
}
standsum = standsum/list.size();
standsum = Math.sqrt(standsum);
return standsum;
}

public String toString() {
return "The list length is " + getListLength() + ", the mean is " + getMean() + ", the sum is " + getSum() + ", and the standard deviation is " + getStdDev();  
}
}
import java.util.Scanner;
导入java.util.ArrayList;
公共类ListStat{
公共静态void main(字符串[]args){
ListStat r=new ListStat();
System.out.println(“创建了一个默认列表。”+r.toString());
ListStat r1=新的ListStat(30);
System.out.println(“创建了另一个列表。”+r1.toString());
ListStat r2=新的ListStat(40);
System.out.println(“创建了另一个列表。”+r2.toString());
r1.加入(4);
System.out.println(“r1的索引13处的项为:“+r1.get(13));
System.out.println(“r1和r2相等:+r1.equals(r2));
System.out.println(“r1和r2重叠此次数:”+r1.countOverlap(r1,r2));
}
私有数组列表;
公共ListStat(){
列表=新的ArrayList();
}
公共列表统计(int N){
列表=新的ArrayList(N);
对于(inti=0;i在你的主要方法中

首先调用no-arg构造函数

ListStat r = new ListStat();    
下面是无参数构造函数的外观:

public ListStat() {
    list = new ArrayList<Integer>();
}
它正在调用
toString
方法

如果查看
toString
方法

public String toString() {
    return "The list length is " + getListLength() + ", the mean is " + getMean() + ", the sum is " + getSum() + ", and the standard deviation is " + getStdDev();
}
getMean
方法是您在那里调用的方法,下面是您在该方法中执行的操作:

double mean = sum / list.size();
那里的列表大小为0

因此,在执行此操作之前,您可能需要在此处添加一个条件检查,以查看列表大小是否为0。

在主方法中

首先调用no-arg构造函数

ListStat r = new ListStat();    
下面是无参数构造函数的外观:

public ListStat() {
    list = new ArrayList<Integer>();
}
它正在调用
toString
方法

如果查看
toString
方法

public String toString() {
    return "The list length is " + getListLength() + ", the mean is " + getMean() + ", the sum is " + getSum() + ", and the standard deviation is " + getStdDev();
}
getMean
方法是您在那里调用的方法,下面是您在该方法中执行的操作:

double mean = sum / list.size();
那里的列表大小为0


因此,在执行此操作之前,您可能需要在此处添加一个条件检查,以查看列表大小是否为0。

问题是由

double mean = sum / list.size();
在getMean()方法中

  • 程序创建一个对象r,它是空的,表示

    r、 size()=0

  • 然后在第9行,调用r.toString()方法,该方法调用getMean()。由于r.size为0,因此程序抛出异常


  • 线程“main”java.lang.arithmetricException:/by zero中的异常该问题是由

    double mean = sum / list.size();
    
    在getMean()方法中

  • 程序创建一个对象r,它是空的,表示

    r、 size()=0

  • 然后在第9行,调用r.toString()方法,该方法调用getMean()。由于r.size为0,因此程序抛出异常


  • 线程“main”java.lang.arithmetricException中的异常:/by zero

    这是如何编译的?我猜您对
    列表的范围有问题,但由于该代码与有效代码完全不同,因此必须告诉您……嗨,请添加您的“main”在你调用类方法的地方编写代码。谢谢!我现在添加了所有内容,我在技术上有点挑战哈哈,当前和扩展的输出是什么?它们是如何编译的?我猜你对
    列表的范围有问题,但由于这些代码一点也不有效,所以我不得不告诉你…嗨,请添加你的“main”在你调用类方法的地方编写代码。谢谢!我现在添加了所有内容,我在技术上有点挑战哈哈,当前和消耗的输出是什么?对不起,我很困惑,我不明白你想告诉我什么好的,所以我想做的是有大小,r1应该是30,r2应该是40,那么我该怎么做呢?我不明白为什么它是0
    liststatr=newliststat()实际上,所有构造函数都创建了一个大小为0的列表,但其他构造函数向列表中添加元素,这会增加列表的大小。我知道,但在调用
    getMean
    时,该构造函数的列表大小为零。无论如何,你已经在回答中指出了。我有点太晚了:对不起,我很抱歉我很困惑,我不明白你想告诉我什么好的,所以我想做的是有大小,r1应该是30,r2应该是40,那么我该怎么做呢?我不明白为什么它是0
    ListStat r=new ListStat()实际上,所有的构造函数都创建了一个大小为0的列表,但是其他的构造函数会向列表中添加元素,这会增加列表的大小。我知道,但是当调用
    getMean
    时,特定的构造函数的列表大小为零。无论如何,你已经在回答中指出了。我有点晚了:P