繁体   English   中英

Java - 家庭作业 - 使用变量的字符串值来命名 class 的实例

[英]Java - Homework - Using the string value of a variable to name an instance of a class

好的,我正在做一项家庭作业,我有 10 名销售人员。 我们有一个争取最大销售量的竞赛。 该作业要求用户输入 10 个 integer 值作为销售数量,然后在输入所有值后返回值最高的销售人员。

她想要什么:

  • 具有(字符串名称和 Integer 销售额)值的 Class“销售额”。
  • 用户输入销售数量整数的 while 循环

我正在尝试做什么。 我假设公司销售人员的名字是已知的,所以我只创建了一个包含 10 个虚构名字的数组 strSalesPerson。 我创建了一个计数器 salespersonCounter 来为用户输入的 while 循环创建计数器。 我试图通过创建一个字符串“salesperson”与计数器连接的变量来基本上创建 salesperson1、salesperson2、salesperson3 等。 我想将其用作输入销售 Class 的每个销售人员的实例名称。

销售 Class

仅供参考,我创建并尝试创建实例的 class 如下所示:

    
private String salesname;
private Integer numsales;

public Sales(String name, Integer sales) {
this.salesname = name;

    if (sales >= 0.0) {
        this.numsales = sales;
    }
} 

// Setter for name
public void setName(String name) {
    this.salesname = name;
}

// Getter for name
public String getName() {
    return salesname;
}

// Setter for Sales
public void setSales(Integer sales) {
if (sales >=0) {
    this.numsales = sales;
} 
}
// Getter for Sales
public int getSales() {
    return numsales;
}


} // End of Class 

试销

这是我将获取用户输入并将其保存为 Sales class 实例的地方。但是,现在我将使用名称数组中的当前实例和 static integer 3 来确保我得到其他部分正常运行,然后我将从那里切换到用户输入。


// Import Scanner
import java.util.Scanner;

public class TestSales {
    public static void main(String[] args) {
    
    // create scanner to obtain input from command window
    Scanner input = new Scanner(System.in);
    
    // Initialize variables
    int salespersonCounter = 1;
    
    // Fill Salesperson names
    String[] strSalesPerson = new String[]{"Mark Hasselback","Gary Moore","Shelly Hemingway", "Susan Meagre","Nick Pantillo","Craig Grey","Alice Reese","Mickey Greene","Chaz Ramirez","Kelly Southerland"};
            
    while (salespersonCounter <=10) {
        String salespersoninstance = ("salesperson"+ salespersonCounter);
        String currsalesperson = strSalesPerson[salespersonCounter -1];
        System.out.printf("%s");
        Sales salespersoninstance = new Sales(strSalesPerson[salespersonCounter -1],);
        System.out.printf("%s is %s!%n",salespersoninstance,currsalesperson);
        salespersonCounter += 1;
    }
    
    }
}

我遇到的问题在这里:

        Sales salespersoninstance = new Sales(strSalesPerson[salespersonCounter -1],3);

它没有接受 salespersoninstance(在本例中为 salesperson1)的字符串值作为 Sales Class 实例的名称,而是告诉我 salespersoninstance 是一个重复的局部变量。 我猜它正在解释它,因为我试图定义一个与我已经声明的变量同名的新变量?

基本上我想要的是 while 计数器,用“salesperson”+ salespersonCounter 创建一个字符串变量 salesperson1、salesperson2、salesperson3 等等,然后使用生成的字符串命名 Sales class 的实例。这样我就可以说 Sales salespersoninstance = new Sales(strSalesperson[salespersoncCounter -1], userinput)

为了帮助你前进一点:

        String[] salePersonNames = new String[]{"Mark Hasselback", "Gary Moore", "Shelly Hemingway", "Susan Meagre", "Nick Pantillo", "Craig Grey", "Alice Reese", "Mickey Greene", "Chaz Ramirez", "Kelly Southerland"};
        for (int i = 0; i < salePersonNames.length; i++) {
            Sales salesPerson = new Sales(salePersonNames[i], 3);
            System.out.printf("%s is %s!%n", salesPerson.getName(), salesPerson.getSales());
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM