gpt4 book ai didi

java - 有没有更简单的方法来编写这个 equalsIgnoreCase 检查链?

转载 作者:行者123 更新时间:2023-12-05 08:22:06 24 4
gpt4 key购买 nike

我正在尝试编写一种方法,该方法以 string 的形式接受用户输入,然后根据字符串包含的内容/等于的内容返回 int 值。我已经写了一个可行的方法,但是它很长,我想知道是否有办法让它更短?

这是当前状态下的方法:

private int readCommandInput(){
System.out.print("Command?>");
String userCommand = programAssignment.assignmentScanner.nextLine();
if(userCommand.equalsIgnoreCase(registerNewDogCMD)){ return 1; }
else if(userCommand.equalsIgnoreCase(listDogsCMD)){ return 2; }
else if(userCommand.equalsIgnoreCase(increaseDogAgeCMD)){ return 3; }
else if(userCommand.equalsIgnoreCase(removeDogCMD)){ return 4; }
else if(userCommand.equalsIgnoreCase(registerNewOwnerCMD)){ return 5; }
else if(userCommand.equalsIgnoreCase(giveDogCMD)){ return 6; }
else if(userCommand.equalsIgnoreCase(listOwnersCMD)){ return 7; }
else if(userCommand.equalsIgnoreCase(removeOwnerCMD)){ return 8; }
else if(userCommand.equalsIgnoreCase(startAuctionCMD)){ return 9; }
else if(userCommand.equalsIgnoreCase(makeBidCMD)){ return 10; }
else if(userCommand.equalsIgnoreCase(listBidsCMD)){ return 11; }
else if(userCommand.equalsIgnoreCase(listAuctionsCMD)){ return 12; }
else if(userCommand.equalsIgnoreCase(closeAuctionsCMD)){ return 13; }
return 0;
}

一些额外的信息:

  • CMD为前缀的变量都是在程序前面定义的字符串,以及用户需要输入的内容来执行各种命令。例如,makeBidCMD 定义为“出价”。
  • 该方法必须能够从用户那里获取所有这 13 条不同的命令,并在用户输入错误命令时返回 0。因此,它总共必须能够返回 14 个不同的值。
  • 该方法必须采用string 格式的输入。例如,我不能让用户为他们想要执行的命令写一个数字并将输入作为 int

最佳答案

对我来说,这种情况的最佳方法是:

String userCommand = programAssignment.assignmentScanner.nextLine().toLowerCase();

HashMap<String, Integer> hmap = new HashMap<String, Integer>();
hmap.put("aa", 1);
hmap.put("bb", 2);
hmap.put("cc", 3);
hmap.put("dd", 4);
return hmap.getOrDefault(userCommand, 0);

关于java - 有没有更简单的方法来编写这个 equalsIgnoreCase 检查链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65357712/

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