我在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;
}
感谢您的任何帮助,这可能只是因为晚了,但我真的无法弄清楚。...或者也许是不可能这样做的。...预先感谢您的任何帮助。
凯文的答案很好(对:有一个缺少的近齿,String
等于.equals()
,而不是==
)。
,但作为另一个选择:这种比较是switch
语句的好地方,而不是链式if
。假设您至少在Java 7中运行,这添加了字符串的开关语句。品味问题。switch()
据说更有效,但我认为在大多数情况下的决定性因素应该是您发现更可读的。
public int getDifficulty() {
int difficulty;
switch (chosenDifficulty) {
case "HUMAN":
difficulty = 1;
break;
case "RANDOM":
difficulty = 2;
break;
default:
difficulty = 3;
}
return difficulty;
}
它可能始终返回0,原因有两个。
首先,您无法使用==
在Java中执行字符串相等检查,并期望一致的结果。您几乎总是想使用" .equals()"方法来检查对象之间的平等。确切的原因在这里很好地解释了:
http://www.programmerinternview.com/index.php/java-questions/java-whats-whats-the-difference-between-equals-and/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;
}
首先,您应该在比较字符串时使用.equals()
方法而不是==
。
if (chosenDifficulty.equals("HUMAN")) {
与"随机"相比,第二个if语句在第一个。这意味着仅当Chosendifficulty等于"人类"时才使用。由于说明有其他条件困难的第二个,如果达到if语句,将始终设置为3,则没有将难度设置为2的场景。然后将难度设置为1。然后将其设置为3,因为它不等于"随机"。或者,如果不满足第一个标准,则相当于"人类",难度将保持为0。
我已经在我想想要的东西下发布了。如果Chosendifficulty是"人",则难度为1。如果是"随机",难度为2。如果是其他任何东西,它将返回3。
public int getDifficulty() {
int difficulty = 3;
if (chosenDifficulty.equals("HUMAN")) {
difficulty = 1;
}
if (chosenDifficulty.equals("RANDOM")) {
difficulty = 2;
}
return difficulty;
}
,而不是铸造大写和检查内容。在这里,目标是检查内容,无论案例如何,请删除
chosenDifficulty = userName.next().toUpperCase();
然后使用equalsignorecase
chosenDifficulty.equalIgnoreCase("HUMAN")
,忽略案例的内容将匹配。