在 Java 中的对象中,我是否需要一个对象?需要跟踪数组中的多个内容



好吧,我有一个方法可以获取工人的姓名和工资。在我的类定义中,我有一个对象,无论他们不输入什么、名称还是名称和工资,它都会创建一个对象。

因此,对于每个工人,我需要询问小费(可以有多个客户给小费)。我在另一种方法中有这个,我提示输入提示,但我不确定如何仅将提示添加到特定工人。即。当我运行程序时,第一个工人的输出是正确的(工资、小费、平均小费),如果我添加另一个工人,小费是错误的,因为它没有分开,而是继续添加每个工人的所有小费

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.
}

最新更新