将数组中对象的值相加
Adding together values from a object in an array
我正在尝试将所有成本值和数量值相加,并在我的方法 getTotalCost
中从我的数组对象 list[i]
将它们相乘(如代码所示):
public class GroceryList {
private int i;
GroceryItemOrder list[] = new GroceryItemOrder[10];
public void addItem(String name, double cost, int quantity) {
try {
for (i = 0; i < list.length; i++) {
list[i] = new GroceryItemOrder(name, cost, quantity);
if (list[i] == list[9] && list[i] != null) {
System.out.format("%6s %-15S %10gKR. %4d stk.%n", "",
list[i].getName_Food(),
list[i].getCost_Food(),
list[i].getQuantity_Food()
);
}
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("You put too many groceries in your cart!");
System.exit(0);
}
}
public void getTotalCost(){
System.out.println();
try {
double totalAmount;
totalAmount = list[i].getCost_Food() * list[i].getQuantity_Food();
System.out.println("The Total Amount is: " + totalAmount);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Something went wrong");
}
}
}
this below is my main class:
package com.company;
public class Main {
public static void main(String[] args) {
GroceryList gL = new GroceryList();
receipt();
gL.addItem("Bananer",10,6);
gL.addItem("Toiletpapir",40,2);
gL.addItem("Svinekød",30,1);
gL.addItem("Papir",25,1);
gL.addItem("Sødmælk",10,3);
gL.addItem("Færdigret",15,5);
//=130
/*
gL.addItem("Kylling",10,2);
gL.addItem("Kaffe",10,2);
gL.addItem("Bønner",10,2);
gL.addItem("Kage",10,2);
//*/
gL.getTotalCost();
}
public static void receipt(){
System.out.println("");
System.out.printf("%9S %1S%n","","\"~discount supermarket receipt~\"");
System.out.printf("%15S %15S %15S%n","Grocery:","Cost:","Quantity:");
System.out.println("");
}
}
这是我在删除 try/catch:
时遇到的输出错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at com.company.GroceryList.getTotalCost(GroceryList.java:33)
at com.company.Main.main(Main.java:26)
我想得到:
The Total Amount is: xxx
您必须跟踪添加到数组中的项目数。
所以在 class 级别声明这个变量,而不是 i
:
private int counter = 0;
您的 addItem()
方法包含一个 for
循环。为什么?
此方法应向 list
添加 1 项,因此更改为:
public void addItem(String name, double cost, int quantity) {
if (counter == list.length) {
System.out.println("Your cart is full! No more items can be added.");
return;
}
list[counter] = new GroceryItemOrder(name, cost, quantity);
counter++;
}
现在 getTotalCost()
你确实需要一个 for
循环来遍历列表中的所有项目并获得你需要的总数:
public void getTotalCost(){
double totalAmount = 0.0;
System.out.println();
for (int i = 0; i < counter; i++) {
totalAmount += list[i].getCost_Food() * list[i].getQuantity_Food();
System.out.format("%6s %-15S %10gKR. %4d stk.%n", "",
list[i].getName_Food(),
list[i].getCost_Food(),
list[i].getQuantity_Food()
);
}
System.out.println("The Total Amount is: " + totalAmount);
}
我正在尝试将所有成本值和数量值相加,并在我的方法 getTotalCost
中从我的数组对象 list[i]
将它们相乘(如代码所示):
public class GroceryList {
private int i;
GroceryItemOrder list[] = new GroceryItemOrder[10];
public void addItem(String name, double cost, int quantity) {
try {
for (i = 0; i < list.length; i++) {
list[i] = new GroceryItemOrder(name, cost, quantity);
if (list[i] == list[9] && list[i] != null) {
System.out.format("%6s %-15S %10gKR. %4d stk.%n", "",
list[i].getName_Food(),
list[i].getCost_Food(),
list[i].getQuantity_Food()
);
}
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("You put too many groceries in your cart!");
System.exit(0);
}
}
public void getTotalCost(){
System.out.println();
try {
double totalAmount;
totalAmount = list[i].getCost_Food() * list[i].getQuantity_Food();
System.out.println("The Total Amount is: " + totalAmount);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Something went wrong");
}
}
}
this below is my main class:
package com.company;
public class Main {
public static void main(String[] args) {
GroceryList gL = new GroceryList();
receipt();
gL.addItem("Bananer",10,6);
gL.addItem("Toiletpapir",40,2);
gL.addItem("Svinekød",30,1);
gL.addItem("Papir",25,1);
gL.addItem("Sødmælk",10,3);
gL.addItem("Færdigret",15,5);
//=130
/*
gL.addItem("Kylling",10,2);
gL.addItem("Kaffe",10,2);
gL.addItem("Bønner",10,2);
gL.addItem("Kage",10,2);
//*/
gL.getTotalCost();
}
public static void receipt(){
System.out.println("");
System.out.printf("%9S %1S%n","","\"~discount supermarket receipt~\"");
System.out.printf("%15S %15S %15S%n","Grocery:","Cost:","Quantity:");
System.out.println("");
}
}
这是我在删除 try/catch:
时遇到的输出错误Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at com.company.GroceryList.getTotalCost(GroceryList.java:33) at com.company.Main.main(Main.java:26)
我想得到:
The Total Amount is: xxx
您必须跟踪添加到数组中的项目数。
所以在 class 级别声明这个变量,而不是 i
:
private int counter = 0;
您的 addItem()
方法包含一个 for
循环。为什么?
此方法应向 list
添加 1 项,因此更改为:
public void addItem(String name, double cost, int quantity) {
if (counter == list.length) {
System.out.println("Your cart is full! No more items can be added.");
return;
}
list[counter] = new GroceryItemOrder(name, cost, quantity);
counter++;
}
现在 getTotalCost()
你确实需要一个 for
循环来遍历列表中的所有项目并获得你需要的总数:
public void getTotalCost(){
double totalAmount = 0.0;
System.out.println();
for (int i = 0; i < counter; i++) {
totalAmount += list[i].getCost_Food() * list[i].getQuantity_Food();
System.out.format("%6s %-15S %10gKR. %4d stk.%n", "",
list[i].getName_Food(),
list[i].getCost_Food(),
list[i].getQuantity_Food()
);
}
System.out.println("The Total Amount is: " + totalAmount);
}