gpt4 book ai didi

java - 如何加载方法参数中给出的名称的枚举?

转载 作者:太空宇宙 更新时间:2023-11-04 09:29:49 26 4
gpt4 key购买 nike

我正在尝试从方法参数中调用枚举的值。

尝试了代码,如果其中有很多无用或虚假的内容,抱歉。显然这不会执行!这只是我认为相关的部分

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 函数能够获取枚举第二位列出的成本。我也可以使用整数而不是 MACHINE1,但这似乎不是枚举中的有效名称。

最佳答案

按照 java 命名约定将枚举重命名为 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());

关于java - 如何加载方法参数中给出的名称的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57220150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com