Java:我将如何遍历一个未满到其最大大小的数组。

标签 java arrays

对于我的问题,我必须编写一个方法来接受用户输入并创建一个对象数组。但是可以创建任意数量的对象。因此数组大小为 100,但仅填充了数组的 2 个元素。现在,当我使用我的 getAverage 方法时,我在它经过存储的对象后得到一个空点异常。

public class Item{
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter the number of objects to input in the array");
    int numOfEntries = input.nextInt();

    Item[] itemArray = new Item[100];
    Item.input(itemArray, numOfEntries);
    System.out.println(Item.getAverage(itemArray));
    //Item.input(itemArray);
} 
public static void input(Item[] arr) {
    Scanner input = new Scanner(System.in);
    double pricesAdded = 0;
    double average = 0;
    double numofEntries = 0;
    for ( int i = 0; i < arr.length; i++) 
    {
        System.out.println("Enter item");
        String item = input.next();

        System.out.println("price");
        double price = input.nextDouble();

        if (price == -1) break;

        arr[i] = new Item(item, price);
        numOfItems++;
    }

    for( int j = 0; j < numofEntries; j++) {
        if(arr[j].getName().equals("peas") || arr[j].getName().equals("Peas")) {
            for( int k = 0; k < numOfItems; k++) { 
                pricesAdded = pricesAdded + arr[k].getPrice();
            }
            average = pricesAdded / numofEntries;
            break;
        }
    }

    if(average == 0) System.out.println("No average output " + average);
        else System.out.println("The average is " + average);



   for ( int i = 0; i < numofEntries; i++)
        System.out.println(arr[i].toString());
}

public static double getAverage(Item[] itemArr) {
    double pricesAdded = 0;
    double average = 0;
    for( int i = 0; i < itemArr.length; i++) {
        if(itemArr[i].getName().equals("peas") || itemArr[i].getName().equals("Peas")) {
            for( int k = 0; k < itemArr.length; k++) { 
                if ( itemArr[k].getPrice() == 0.0) break;
                pricesAdded = pricesAdded + itemArr[k].getPrice();

            }
            average = pricesAdded / itemArr.length;
            break;
        }
    }
    return average;
}

最佳答案

只需添加一个空检查:

if (arr[j] != null) {
// your logic
}

更好的方法是使用像 ArrayList 这样的数据结构,因为它们可以随着您添加元素而增长。

关于Java:我将如何遍历一个未满到其最大大小的数组。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663646/

相关文章:

java - Chromium WebView 不存在

java - Mockito stub 错误的方法

java - GStreamer Android 教程构建失败

python - 将 ndarray 的最后一个维度转换为元组/重新排列

arrays - 如何将数组传递给VBA中的函数?

php - 在数组中跳过 mysql 数据库中的值

swing - 如何改变JLabel的颜色

java - Java 不支持 SHA-512?

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

arrays - 在另一个 Swift 文件中使用返回值(字符串数组)