簡體   English   中英

如何加載方法參數中給定名稱的枚舉?

[英]How To Load An Enum Of The Name Given In Method Argument?

我試圖從方法參數中調用一個枚舉的值。

嘗試過該代碼,如果其中有很多無用或偽造的內容,則感到抱歉。 顯然,這不會執行! 我認為這只是相關的一點

public int choosemachines(int cost){    

  Scanner scanner = new Scanner(System.in);
  System.out.println("Which One Would You Like?");

  int choice = scanner.nextInt(); 
  switch (choice) {         
      case 1:
        writeArrays("MACHINE1", 1);
        break;
}

public void writeArrays(String **machine**, int arrint) {   

        if (cost >= machines.**machine**.getcost()) {

            int alsize = twoDim.size();
            twoDim.add(new ArrayList<Integer>());
            twoDim.get(alsize).add(arrint);
            twoDim.get(alsize).add(1);
            twoDim.get(alsize).add(1);
            System.out.println(alsize);

             for (ArrayList<Integer> row : twoDim)
             {
                for (Integer element : row)
                {
                   System.out.print(element + "        ");
                }
                System.out.println();
            }
        }
            else {
            System.out.println("Can't Afford It...");

            }   
        }

public enum machines {

    MACHINE1("General Electric Caffeinator", 1500, "TWO"),
    MACHINE2("Sleepless Night", 2000, "ONE")
    ;

    private String name;
    private int cost;
    private String coffeeType;

    machines (String n, int c, String cT) {
        name = n;
        cost = c;
        coffeeType = cT;
    }

    String getname(){
        return name;
    }

    int getcost(){
        return cost;
    }

    String getcoffeeType() {
        return coffeeType;
    }
}

我希望if函數能將費用列在Enum的第二位。 也可以用整數而不是MACHINE1為我工作,但這在Enum中似乎不是有效的名稱。

按照Java命名約定將Enum重命名為Machine ,您可以這樣做:

public void writeArrays(String machineName, int arrint) {

    int cost = 0;
    for(Machine machine : Machine.values()){
        if(machine.getname().equals(machineName)){
            cost = machine.getcost();
            break;
        }
    }
    //todo add rest of the code 
}

您還可以向Machines添加實用程序方法

 public static Machine getByName(String machineName) {

    for(Machine machine : Machine.values()){
        if(machine.getname().equals(machineName))
            return machine;
    }
    return null;
}

使用以下命令對其進行測試: System.out.println(Machine.getByName("Sleepless Night").getcost());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM