我是一名新程序员,试图通过制作游戏来练习。我希望玩家能够设置自己的名字,并就该名字是否正确回答“是”或“否”。我通过使用 while 循环来做到这一点。但是,由于名称是在循环内部初始化的,所以我不能在外部使用它。我想知道是否有办法这样做。
我的代码可能非常基础和混乱。我为此道歉。
Scanner input = new Scanner(System.in);
String name;
int nameRight = 0;
while (nameRight == 0) {
System.out.println("What is your name?");
name = input.nextLine();
System.out.println("So, your name is " + name + "?");
String yayNay = input.nextLine();
if (yayNay.equals("yes") || yayNay.equals("Yes")) {
System.out.println("Okay, " + name + "...");
nameRight++;
}
else if (yayNay.equals("no") || yayNay.equals("No")) {
System.out.println("Okay, then...");
}
else {
System.out.println("Invalid Response.");
}
}
所以基本上,我希望在循环内初始化 String 名称,这样我就可以在循环外使用它。
原文由 max 发布,翻译遵循 CC BY-SA 4.0 许可协议
变量的范围将该变量的使用限制在它定义的范围内。如果您希望它在更广泛的范围内使用,请在循环外声明它。
您已经在循环外定义了变量,所以您唯一需要做的就是初始化它,正如您应该得到的错误消息所建议的那样。
基本问题是编译器无法计算出变量将在所有可能的代码路径中设置。有两种方法可以在不使用虚拟值的情况下解决此问题。您可以使用
do/while
循环。或放弃条件,因为您不需要计数器。