创建一个基于用户字符串输入返回整数的方法

时间:2015-05-06 01:37:37

标签: java methods user-input

我在java上不太好,但我正在尝试创建一个从用户获取输入并返回值的方法。但难度总是返回0?

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;
}

感谢您提供任何帮助,这可能只是因为它已经很晚了,但我真的无法理解......或者也许它不可能这样做......提前感谢任何帮助

4 个答案:

答案 0 :(得分:4)

由于两个原因,它可能总是返回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;
}

答案 1 :(得分:4)

凯文的答案很好(比如:缺少近距离支撑,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;
}

答案 2 :(得分:2)

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

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

第二个if语句与" RANDOM"相比,位于第一个。这意味着它仅在选择难度等于" HUMAN"时使用。由于第二个if语句有一个else条件,如果达到if语句,则难以设置为3,没有将难度设置为2的情况。这是因为要满足第一个if语句,选择难度必须为"然后将人类"。难度设置为1.然后设置为3,因为它不等于" RANDOM"。或者如果没有达到第一个标准,选择难度等于" HUMAN",难度将保持为0。

我在下面发布了我认为你想要的内容。如果选择困难是" HUMAN"困难是1.如果是" RANDOM"难度是2.如果是其他任何东西则返回3.

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

答案 3 :(得分:1)

而不是强制转换为大写并检查内容。这里的目标是检查内容而不管大小写,所以删除

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

然后使用equalsIgnoreCase

      chosenDifficulty.equalIgnoreCase("HUMAN")

因此,只会忽略案例内容。