簡體   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