好吧,我有一个方法可以获取工人的姓名和工资。在我的类定义中,我有一个对象,无论他们不输入什么、名称还是名称和工资,它都会创建一个对象。
因此,对于每个工人,我需要询问小费(可以有多个客户给小费)。我在另一种方法中有这个,我提示输入提示,但我不确定如何仅将提示添加到特定工人。即。当我运行程序时,第一个工人的输出是正确的(工资、小费、平均小费),如果我添加另一个工人,小费是错误的,因为它没有分开,而是继续添加每个工人的所有小费
private static void addWorker(){
name = JOptionPane.showInputDialog("Name?");
wage = Double.parseDouble(JOptionPane.showInputDialog(null,"Wage?"));
worker object = new worker(name, wage);
workerArray[count] = object;
addWorkerTip();
count++;
}
private static void addWorkerTip(){
do{
tip = Double.parseDouble(JOptionPane.showInputDialog(null,"tip?"));
numTips++;
totalWorkerTips = tip + totalWorkerTips;
worker.addTips(totalWorkerTips);
}while (JOptionPane.showConfirmDialog(null,"Another Worker?") == JOptionPane.YES_OPTION);
}
尝试在
do 循环结束时将提示重置为 0,以便它可以接受新值而不添加以前的值。
tip = 0;
或者,您可以创建一个提示数组并将每个提示值存储在数组中
你应该用适当的实例变量创建一个名为 worker 的类。
public class Worker{
private String name;
private double wage;
private double tip;
public Worker(){
name=null;
wage=null;
tip=0;
}
public Worker(String n){
name=n;
tip=0;
}
public Worker(String n, double w){
name = n;
wage = w;
tip=0;
}
public void setWage(double newWage){
wage = newWage;
}
public void addTip(double newTip){
tip+=newTip;
}
}
以下是我如何处理您的类结构,
private static class Worker {
private String name;
private double wage;
private double tip = 0;
Worker(String name, double wage) {
this.name = name;
this.wage = wage;
}
public String getName() {
return name;
}
public double getWage() {
return wage;
}
public void addTip(double tip) {
this.tip += tip;
}
public double getTipe() {
return this.tip;
}
}
// Use a Collection of Worker(s) - not an array.
private List<Worker> workers = new ArrayList<Worker>();
public void addWorker() {
String name = JOptionPane.showInputDialog("Name?");
double wage = Double.parseDouble(JOptionPane
.showInputDialog(null, "Wage?"));
Worker worker = new Worker(name, wage);
double tip = Double.parseDouble(JOptionPane
.showInputDialog(null, "tip?"));
worker.addTip(tip);
workers.add(worker); // Add the worker to the List.
}