[英]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.