繁体   English   中英

是否可以在Java中的if else语句中更新变量

[英]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不是EMH ,则永远不会输入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM