Java 无法将布尔变量解析为while语句中的变量

Java 无法将布尔变量解析为while语句中的变量,java,if-statement,boolean,do-while,Java,If Statement,Boolean,Do While,我想做一个代码,重复它自己,直到用户键入单词Game或单词Balance。我做了一个do-while循环,但是我的while语句有一个错误。错误是:error3无法解析为变量。有人知道我的代码有什么问题吗 System.out.println(“欢迎掷骰子!”); System.out.println(“你叫什么名字?”); 扫描仪输入=新扫描仪(System.in); 字符串名称=input.nextLine(); System.out.println(“欢迎”+Name+“!”); Syst

我想做一个代码,重复它自己,直到用户键入单词Game或单词Balance。我做了一个
do-while
循环,但是我的while语句有一个错误。错误是:
error3无法解析为变量。有人知道我的代码有什么问题吗

System.out.println(“欢迎掷骰子!”);
System.out.println(“你叫什么名字?”);
扫描仪输入=新扫描仪(System.in);
字符串名称=input.nextLine();
System.out.println(“欢迎”+Name+“!”);
System.out.println(“您想玩游戏还是想检查您的帐户余额?”);
System.out.println(“对于游戏类型:游戏。对于您的帐户余额类型:余额”);
做{
字符串选择=input.nextLine();
字符串Balance=“Balance”;
字符串游戏=“游戏”;
input.close();
布尔错误1=!新字符串(选择).equals(游戏);
布尔错误2=!新字符串(选项).equals(平衡);
布尔error3=(error2 | | error1)=真;
if(新字符串(选择).equals(游戏)){
System.out.println(“开始游戏!”);
}
else if(新字符串(选项).equals(平衡)){
System.out.println(“检查余额”);
}
否则{
System.out.println(“这不是正确答案”);
System.out.println(“Typ:Game启动游戏。Typ:Balance查看帐户余额”);
}
}
while(error3==true);

您试图读取的
error3
值超出了循环体的范围,在循环体中声明:

while(error3 == true);
只需在循环之前声明它:

boolean error3 = true;
do {
    //...
    error3 = (error2 || error1) == true; 
    //...
}
while(error3 == true);

因为您在do while循环中定义了变量。 这样做:


error3
do
范围内定义。将其声明移到
do
范围之外,并在内部设置值:

    boolean error3 = false;
    do {
        String Choice = input.nextLine();
        String Balance = "Balance";
        String Game = "Game";
        input.close();

        boolean error1 = ! new String(Choice).equals(Game);
        boolean error2 = ! new String(Choice).equals(Balance);
        error3 = error2 || error1; 
还请注意,您可以将
(error2 | | error1)=true
简化为
error2 | error1
。您的
while
语句也可以这样做:

while(error3);

嗨,谢谢你的回答。但我仍然得到一个错误,我改变了我的代码,但他目前给我另一个错误。在第行:布尔error3=error2 | | error1;错误是:链接本地重命名的所有引用(不更改其他文件中的引用)。您是否也知道此错误的解决方案?谢谢:)错误截图?听起来像是IDE的重构建议,不是真正的错误。事实上,David是正确的
error3=error2 | | error1
,您不希望该行开头出现
布尔值。您好,谢谢您的回答。但我仍然得到一个错误,我改变了我的代码,但他目前给我另一个错误。在第行:布尔error3=(error2 | | error1)=true;错误是:链接本地重命名的所有引用(不更改其他文件中的引用)。当我运行代码时,Eclipse说:复制局部变量。您是否也知道此错误的解决方案?谢谢:)@StijnKrabbenborg:因为您正试图在循环中重新声明
error3
变量。不要重新声明它,像我在答案中那样使用现有变量。嗨,谢谢你的回答。但我仍然得到一个错误,我改变了我的代码,但他目前给我另一个错误。在第行:布尔error3=(error2 | | error1)=true;错误是:链接本地重命名的所有引用(不更改其他文件中的引用)。当我运行代码时,Eclipse说:复制局部变量。您是否也知道此错误的解决方案?谢谢:)从循环中的变量中删除布尔类型,帮助其他人快速找到解决方案。
while(error3);