根据用户字符串输入创建一个 return 整数的方法

Creating a method to return an integer based on user string input

我在 java 方面不太擅长,但我正在尝试创建一种方法来获取用户的输入和 returns 一个值。然而难度总是returns0?

chosenDifficulty = userName.next().toUpperCase();

 public int getDifficulty() {
    int difficulty = 0;
    if (chosenDifficulty == "HUMAN") {
            difficulty = 1;
        if (chosenDifficulty == "RANDOM") {
            difficulty = 2;
        }else{
            difficulty = 3;
        }
    }
     return difficulty;
}

感谢您的帮助,可能只是因为晚了,但我真的想不通....或者可能只是不可能这样做....提前感谢任何帮助。

它可能总是 return 0,原因有二。

首先,您无法在 Java 和 == 中执行字符串相等性检查并期望得到一致的结果。您几乎总是想使用“.equals()”方法来检查对象之间的相等性。确切的原因在这里得到了很好的解释:

http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/

其次,您缺少一个结束括号。

下面应该有效:

public int getDifficulty() {
    int difficulty = 0;
    if (chosenDifficulty.equals("HUMAN")) {
        difficulty = 1;
    } else if (chosenDifficulty.equals("RANDOM")) {
        difficulty = 2;
    }else {
        difficulty = 3;
    }
    return difficulty;
}

Kevin 的回答很好(也就是说:缺少大括号,String 相等比较应该用 .equals() 而不是 == 来完成)。

但作为附加选项:这种比较适合 switch 语句,而不是链式 if。这假设您至少 Java 7,which added switch statements for strings 是 运行。品味问题。 switch() 据说效率更高一些,但我认为在大多数情况下,决定因素应该是你觉得哪个更具可读性。

public int getDifficulty() {
    int difficulty;
    switch (chosenDifficulty) {
        case "HUMAN":
            difficulty = 1;
            break;
        case "RANDOM":
            difficulty = 2;
            break;
        default:
            difficulty = 3;
    }
    return difficulty;
}

而不是转换为大写并检查内容。这里 objective 是不分大小写检查内容,所以删除

      chosenDifficulty = userName.next().toUpperCase();

然后使用 equalsIgnoreCase

      chosenDifficulty.equalIgnoreCase("HUMAN")

这样忽略大小写只会匹配内容。

首先你应该在比较字符串时使用.equals()方法而不是==

if (chosenDifficulty.equals("HUMAN")) {

第二个 if 语句,与 "RANDOM" 相比,在第一个里面。这意味着它仅在 chosenDifficulty 等于 "HUMAN" 时使用。由于第二个 if 语句具有 else 条件,如果达到 if 语句,难度将始终设置为 3,因此没有将难度设置为 2 的场景。这是因为要满足第一个 if 语句,chosenDifficulty 必须 "HUMAN".Difficulty 将设置为 1。然后它将设置为 3,因为它不等于 "RANDOM"。或者,如果不满足第一个条件,选择的难度等于 "HUMAN",难度将保持为 0。

我已经在下面发布了我认为您想要的内容。如果 chosenDifficulty 为 "HUMAN" 则难度为 1。如果为 "RANDOM" 则难度为 2。如果为其他难度则为 returns 3.

 public int getDifficulty() {
       int difficulty = 3;
    if (chosenDifficulty.equals("HUMAN")) {
            difficulty = 1;
          }
        if (chosenDifficulty.equals("RANDOM")) {
            difficulty = 2;
        }   
     return difficulty;
  }