我班级的作业要求我创建一个程序,告诉超市哪个顾客每天都在商店里花了最多的钱。该程序必须找到该客户并显示其名称。
作业目标 - 要处理多个班级,请使用ArrayLists
并应用所获得的知识。
我的问题:
我真的很想了解我在这里做了什么,所以在正确的方向上任何帮助都会受到赞赏!提前谢谢你抽出时间帮助我!
import java.util.Scanner;
public class main {
public static void main(String[] args) {
System.out.println("* * * * * THE SUPERMARKET * * * * *");
System.out.println(" Written by Nate Irwin");
System.out.println();
double finalTotal = -1;
String anAccountName;
Scanner input = new Scanner(System.in);
Store store = new Store();
do {
System.out.println("Enter the customer name: ");
if(input.hasNextLine()){
anAccountName = input.nextLine();
System.out.println("Enter customer total price, hit 0 to QUIT: ");
finalTotal = input.nextDouble();
store.addAccount(anAccountName, finalTotal);
System.out.println();
}
} while (finalTotal != 0);
System.out.println(store.getHighestCustomerTotal() + " has spent the most with us today!");
}
}
Store
上课:
import java.util.ArrayList;
public class Store {
// Creates an ArrayList.
private ArrayList<CustomerAccount> accounts = new ArrayList<CustomerAccount>();
//
public void addAccount(String anAccountName, double finalTotal) {
accounts.add(new CustomerAccount(anAccountName, finalTotal));
}
// Gets the HIGHEST customer total.
public String getHighestCustomerTotal() {
CustomerAccount highest = accounts.get(0);
for (int i = 1; i < accounts.size(); i++) {
if (accounts.get(i).getTotal() > highest.getTotal())
{
highest = accounts.get(i);
}
}
return highest.getAccountName();
}
}
CustomerAccount
上课:
public class CustomerAccount {
// Variables defined to this class.
private String accountName;
private double total;
// Constructor.
public CustomerAccount(String anAccountName, double finalTotal) {
accountName = anAccountName;
total = finalTotal;
}
// Gets total from each customer.
public double getTotal() {
return total;
}
// Gets a customer's name.
public String getAccountName() {
return accountName;
}
}
答案 0 :(得分:0)
你的主要循环:
while(Condition)
测试。这种循环通常使用While True
完成,并且循环中的某些测试会突破循环。 在getHighestCustomerTotal()
for()
的形式,您可以直接迭代列表的元素,而不是迭代索引。答案 1 :(得分:0)
我认为你的方法很好,它完成了工作。
我不太确定你要问的是如何循环两个输出语句,然后是否应该在main方法中。根据我的理解,通过查看代码,从主类中运行此输入循环是完全正常的。虽然我会在循环外部移动第一个“介绍性”输出,但是每次循环重复时都不会看到它,所以do-while很好。
另外,我注意到你实际上并没有在main方法中调用/实例化Store
类,当它遍历帐户ArrayList时,没有数据被添加到Store
类。
对于提出更“现代”方法的答案,我认为您使用的for循环很好。我认为这个人指的是for-each循环。使用少量数据循环使用它并不重要。
该循环的逻辑存在一些错误。 getHighestCustomerTotal()
引用空帐户ArrayList。你在Store
类中声明了一个ArrayList,并试图遍历它,但它是空的,除非你在某个时候从main方法调用addAccount()
方法,所以你需要对它进行一些错误检查。