【问题标题】:I need help writing an application that assigns ID's and Sale amounts to Salesperson [duplicate]我需要帮助编写一个将 ID 和销售额分配给销售人员的应用程序 [重复]
【发布时间】:2016-02-15 00:02:16
【问题描述】:

我得到的指示如下: 创建一个名为 Salesperson 的类。销售员的数据字段包括一个整数 ID 号和双倍年销售额。方法包括需要两个数据字段的值的构造函数,以及每个数据字段的 get 和 set 方法。

编写一个名为 DemoSalesperson 的应用程序,声明一个包含 10 个销售人员对象的数组。

将每个 ID 号设置为 9999,并将每个销售值设置为零。

显示 10 个销售人员对象。将文件另存为 Salesperson.java 和 DemoSalesperson.java。

到目前为止我的代码如下:

public class Salesperson{
private int idNumber;
private double salesAmount;

    public Salesperson(int idNum, double salesAmnt){
        idNumber = idNum;
        salesAmount = salesAmnt;
    }

    public int getIdNumber(){
        return idNumber;
    }

    public void setIdNumber(int idNum){
        idNumber = idNum;
    }

    public double getSalesAmount(){
        return salesAmount;
    }

    public void setSalesAmount(double salesAmnt){
        salesAmount = salesAmnt;
    }
}

我相信,这么多是正确的。我遇到的问题(我相信)出在使用此信息的程序中:

public class SalespersonDemo{
public static void main(String[] args){
    final int NUM_PERSON = 10;
    final double TOTAL_SALES = 10;
    int x = 0;
    double y = 0.0;
    Salesperson[] id = new Salesperson[NUM_PERSON];
    Salesperson saleperson = new Salesperson(x, y);

    getSalesAssociateInfo(id);

    for(x = 0; x < NUM_PERSON; ++x){
        System.out.println("Amount sold by associate " + id[x].getIdNumber() + " :");
        for(y = 0; y < TOTAL_SALES; ++y)
            System.out.print(id[x].getSalesAmount());
            System.out.println();
    }

}
public static void getSalesAssociateInfo(Salesperson[] id){
    final int NUM_PERSON = 10;
    final double TOTAL_SALES = 10;
    int x = 9999;
    double y = 0;}
} 

我不确定我做错了什么,但是当编译程序给我一个错误,上面写着“在 SalespersonDemo.main(SalespersonDemo.java:13) 的线程“main”java.lang.NullPointerException 中出现异常。”

如果有人对我做错了什么以及如何解决它有任何建议,我将非常感激。

我尝试以一种我可以轻松返回并在以后编辑 SalespersonDemo 以完成此项目的方式编写此程序,因为第二部分要求我为每个 Salesperson 分配 ID 编号,编号为 111- 120个,销售额在20000-70000之间,每个销售员增加5000个。如果您能给我一些提示,帮助我完成这部分问题,我将不胜感激。 编辑:我尝试更改 getSalesAssociateInfo 方法以尝试将特定数字分配给我的 id 数组。这就是我现在拥有的:

    public static void getSalesAssociateInfo(Salesperson[] id){
    final int NUM_PERSON = 10;
    final double TOTAL_SALES_AMOUNT = 10;
    int x ;
    double y;
    for(x = 0; x < NUM_PERSON; ++x){
        id[x] = new Salesperson(9999, 0);
        id[x].setIdNumber(x);
        for(y = 0; y < TOTAL_SALES_AMOUNT; ++y)
            id[x].setSalesAmount(y);
    }
}

结果是我不再收到空指针异常错误,但销售人员没有显示为“9999”,销售金额看起来很荒谬“09.09.09.09.09...” 在这一点上,我开始感到非常愚蠢。

编辑#2:好吧,稍微摆弄一下程序,我得到了我想要的结果,但我不确定我的代码中的逻辑有多合理。任何提示将不胜感激,但这里是代码:

public class SalespersonDemo{
public static void main(String[] args){
    final int NUM_PERSON = 10;
    final int SALES_AMOUNT= 1;
    double totalSales = 0;
    int x = 0;
    double y = 0.0;
    Salesperson[] id = new Salesperson[NUM_PERSON];
    Salesperson saleperson = new Salesperson(x, y);

    getSalesAssociateInfo(id);

    for(x = 0; x < NUM_PERSON; ++x){
        System.out.println("Amount sold by associate " + id[x].getIdNumber() + ":");
        for(y = 0; y < SALES_AMOUNT; ++y)
            System.out.print(id[x].getSalesAmount());
            System.out.println();

    }

}
    public static void getSalesAssociateInfo(Salesperson[] id){
        final int NUM_PERSON = 10;
        final int SALES_AMOUNT = 0;
        double totalSales = 1;
        int x = 0;
        double y = 0.0;
        for(x = 0; x < NUM_PERSON; ++x){
            id[x] = new Salesperson(x, y);
            id[x].setIdNumber(9999);
            for(y = 0; y < SALES_AMOUNT ; ++y)
                totalSales = 0;
                id[x].setSalesAmount(y);

       }
   }
}

再次,如果我的问题不清楚,或者我被视为“菜鸟”(我非常业余),我想道歉。我将阅读这篇文章中链接的所有主题,并对代码进行调整。当我对结果感到满意时,如果在我有合适的答案时不存在合适的答案,我会自己回答问题。我仍然需要弄清楚如何将 ID# 设置为从 111 开始到 120 结束,并且销售额必须从 25,000 开始,每个销售人员增加 5,000。

编辑#3:这是我的最终代码。我会很感激一些反馈。无论如何,感谢所有帮助解决这个问题的人。

public class DemoSalesperson2{
public static void main(String[] args){
    final int NUM_PERSON = 10;
    final int SALES_AMOUNT= 1;
    int x = 0;
    double y = 0;
    Salesperson[] id = new Salesperson[NUM_PERSON];
    Salesperson saleperson = new Salesperson(x, y);

    getSalesAssociateInfo(id);

    for(x = 0; x < NUM_PERSON; ++x){
        System.out.println("Amount sold by associate " + id[x].getIdNumber() + ":");
        for(y = 0; y < SALES_AMOUNT; ++y)
            System.out.print(id[x].getSalesAmount());
            System.out.println();

    }

}
public static void getSalesAssociateInfo(Salesperson[] id){
    final int NUM_PERSON = 10;
    final int SALES_AMOUNT = 1;
    int ident[] = {111, 112, 113, 114, 115, 116, 117, 118, 119, 120};
    double amnt[] = {25000, 30000, 35000, 40000, 45000, 50000, 55000, 60000, 65000, 70000};
    int x;
    double y = 0;
        for(x = 0; x < NUM_PERSON; ++x){
            id[x] = new Salesperson(x, y); 
            id[x].setIdNumber(ident[x]);
            for(y = 0; y < SALES_AMOUNT ; ++y)
                id[x].setSalesAmount(amnt[x]);

        }
    }
}

【问题讨论】:

  • 你永远不会初始化id数组
  • 在尝试初始化 id 数组时,我更改了 getSalesAssociateInfo 方法。我不太确定我是否走在正确的轨道上,但它现在实际上运行了该程序。但是你们是对的,因为销售人员显示为 0-9,当他们都需要为 9999 时,我将编辑我的问题以显示我的代码

标签: java arrays methods constructor


【解决方案1】:

您从未将任何 Salesperson 添加到 Salesperson[] id = new Salesperson[NUM_PERSON]; 数组中,它只有 10 个 null 元素。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
相关资源
最近更新 更多