将用户输入与Java中的字符串数组进行匹配?

时间:2018-11-02 10:35:38

标签: java arrays collections exception-handling

我是Java的新手,已经获得了以下任务:

  • 编写一个Java程序来提示用户输入3个字母的正文部分名称,该名称必须在3个字母的正文部分的“官方”列表中。 (手臂,耳朵,眼睛,口香糖,臀部,下颌,腿,嘴唇,肋骨,脚趾)
  • 如果用户正确做出猜测,则将正确的猜测显示为列表的一部分。
  • 允许用户继续猜测,直到他们都拥有10。
  • 如果身体部位不正确,则显示一条适当的消息。
  • 显示他们做出的猜测数量,包括 正确的。

给出的建议是在适当的地方使用数组和集合以及异常处理,但是到目前为止,我不知道从哪里编写代码。任何帮助将不胜感激,谢谢。

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    String[] bodyparts = new String [10];

    bodyparts[0] = "Arm";
    bodyparts[1] = "Ear";
    bodyparts[2] = "Eye";
    bodyparts[3] = "Gum";
    bodyparts[4] = "Hip";
    bodyparts[5] = "Jaw";
    bodyparts[6] = "Leg";
    bodyparts[7] = "Lip";
    bodyparts[8] = "Rib";
    bodyparts[9] = "Toe";

    Set<String> bodypartSet = new TreeSet<>();
    Collections.addAll(bodypartSet, bodyparts);

    System.out.println("Please enter a 3 letter body part: ");
    String bodypart = input.nextLine();

    if (bodypartSet.contains(bodypart)) {
        System.out.println("Correct,  " + bodypart + " is on the list!");
    } else {
        System.out.println("Nope, try again!");
    }

}

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。以下内容不是最佳或最有效的方法,但它应该可以工作... 首先,您必须将“正式”列表放入结构中,例如数组:

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  var domain = changeInfo.url; // Or tab.url
  /* ... */

现在,您必须编写一种可以在“ offList”中找到世界的方法,如下所示:

private static String[] offList={Arm, Ear, Eye, Gum, Hip, Jaw, Leg, Lip, Rib, Toe};

现在,让我们创建一个猜谜游戏GUI:

private static boolean find(String word){
    for( int i=0; i<offList.length; i++){
        if(word.equals(offList[i])) //if "word" is in offList
            return true;
    }
    return false;
}

如果要在窗口中显示此游戏,则必须学习一些Java Swing类。

编辑:我在主要帖子编辑之前发布我的答案。首先,您必须了解Collections的优点和用法...例如,当您知道所有LinkedList方法时,此分配看起来就像是在开玩笑! ;)

答案 1 :(得分:0)

您需要一个循环,否则它将只要求输入一次。

类似的事情应该做:

    ArrayList<String> bodyParts = new ArrayList<String>();

    bodyParts.add("Arm");
    bodyParts.add("Ear");
    bodyParts.add("Eye");
    bodyParts.add("Gum");
    bodyParts.add("Hip");
    bodyParts.add("Jaw");
    bodyParts.add("Leg");
    bodyParts.add("Lip");
    bodyParts.add("Rib");
    bodyParts.add("Toe");
    String input = "";
    int totalGuesses = 0;

    Scanner sc = new Scanner(System.in);

    System.out.println("Start guessing...");

    while (!bodyParts.isEmpty()) {
        totalGuesses++;
        input = sc.nextLine();
        if (input.length() != 3 || !bodyParts.contains(input)) {
            // incorrect, do nothing
            System.out.println("Nope.");
        } else {
            // correct, remove entry
            bodyParts.remove(input);
            System.out.println("Correct! " + (10 - bodyParts.size()) + " correct guess" + ((10 - bodyParts.size()) != 1 ? "es" : ""));
        }
    }
    System.out.println("Done. You have found them all after " + totalGuesses + " guesses.");
    sc.close();

此外,这是区分大小写的。键入Arm时找不到arm。而且,如果您需要所有猜测的数目,则只需在循环之前添加int,然后在循环中增加它即可。

我的示例的结果:

  

开始猜测...
  手臂
  没有
  手臂
  正确! 1个正确的猜测
  手臂
  没有
  耳朵
  正确! 2个正确的猜测
  眼睛
  正确! 3个正确的猜测

(...)

  

肋骨
  正确! 9个正确的猜测
  脚趾
  正确! 10个正确的猜测
  做完了经过12次猜测,您已经找到了它们。