對於我的問題,我不得不編寫一個方法,將採取用戶輸入並創建一個對象數組。但是可以創建任意數量的對象。所以數組大小是100,但只有2個數組元素被填充。現在,當我使用我的getAverage方法時,在經過存儲的對象後,我得到一個空點異常。Java:我將如何迭代未達到其最大大小的數組。
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;
}
保留一個櫃檯! – ZhongYu
保留一個櫃檯;使用定點值;創建一個新的數組+1長度(uhg複雜度,但它是世界「工作」);或者,我的建議,使用列表並保持簡單。 – user2864740