[英]is it possible to update a variable inside an if else statement in java
我必须做一个基本的猜谜游戏,在这段代码中我遇到了一些问题,我试图将由不同方法生成的随机数分配给变量secretNumber,但是当我运行此代码时,该变量并不能简单地保存打印出变量,如果我在if else语句之外添加另一个print语句,则获取该变量,它指出该变量尚未初始化。 任何有关如何执行此操作的帮助将不胜感激。
public static void main(String[] args) {
int secretNumber, playerGuess;
String difficulty;
Scanner kb = new Scanner(System.in);
System.out.println("please select your difficulty");
System.out.println("E = easy M = medium, H = hard");
difficulty = kb.nextLine();
if (difficulty.equalsIgnoreCase("E")) {
secretNumber = easyNumber();
System.out.println(" " + secretNumber + " ");
} else if (difficulty.equalsIgnoreCase("M")) {
secretNumber = mediumNumber();
System.out.println(" " + secretNumber + " ");
} else if (difficulty.equalsIgnoreCase("H")) {
secretNumber = hardNumber();
System.out.println(" " + secretNumber + " ");
}
}
如果difficulty
不是E
, M
或H
,则永远不会输入if
子句。 因此,变量secretNumber
将不会初始化。
如何解决这个问题?
在声明它时初始化secretNumber
(在使用之前进行初始化的一个好习惯):
int secretNumber = -1; // you can change this value
另一种选择是添加一个else
块:
} else if (...) { ... } else { secretNumber = -1; // you can change this value }
要回答您的标题问题: 当然可以 。
要解决您的问题:只需执行编译器所说的:初始化变量:
int secretNumber = 0;
编译器会抱怨,因为您无法确定用户是否输入了三种可能性之一。 如果用户输入其他内容,则不会为该变量分配任何值,因此您将使用未初始化的变量。
默认情况下,不初始化局部变量。 您必须在首次使用前对其进行显式初始化。
对于原始类型,请使用0或-1;对于Object,请使用null
。
您可以通过在最后添加else
来解决它
if (difficulty.equalsIgnoreCase("E")) {
secretNumber = easyNumber();
System.out.println(" " + secretNumber + " ");
} else if (difficulty.equalsIgnoreCase("M")) {
secretNumber = mediumNumber();
System.out.println(" " + secretNumber + " ");
} else if (difficulty.equalsIgnoreCase("H")) {
secretNumber = hardNumber();
System.out.println(" " + secretNumber + " ");
} else {
secretNumber = 0;//any default value
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.