根据用户字符串输入创建一个 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()”方法来检查对象之间的相等性。确切的原因在这里得到了很好的解释:
其次,您缺少一个结束括号。
下面应该有效:
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;
}
我在 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()”方法来检查对象之间的相等性。确切的原因在这里得到了很好的解释:
其次,您缺少一个结束括号。
下面应该有效:
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;
}