我在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;
}
感谢您提供任何帮助,这可能只是因为它已经很晚了,但我真的无法理解......或者也许它不可能这样做......提前感谢任何帮助
答案 0 :(得分:4)
由于两个原因,它可能总是返回0。
首先,您不能使用==
在Java中执行字符串相等性检查,并期望获得一致的结果。您几乎总是希望使用“.equals()”方法来检查对象之间的相等性。具体原因在这里解释清楚:
其次,你错过了一个结束支撑。
下面应该有效:
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")
因此,只会忽略案例内容。