【问题标题】:boolean input to string yes for wantsToContinue in do while loopdo while循环中wantsToContinue的字符串是布尔输入
【发布时间】:2013-11-17 19:48:27
【问题描述】:

我正在尝试使用 do while 循环,如果用户对“你想继续”回答是,则该循环将终止如果我在控制台中回答 true,则循环正常运行,但是,我想告诉用户输入是或否。因此,我搜索了有关如何将字符串值分配给 boolean 值为 true 的信息,但我的代码无法正常工作。有人可以告诉我正确的语法吗?

boolean wantsToContinue=String.equalsIgnoreCase("yes");

do{
    rollOne=diceOne.roll();
    rollTwo=diceTwo.roll();
    rollTotal=rollOne+rollTwo;
    //BoardSquare thePlayer.setLocation(square[]);

    Scanner keyboard=new Scanner(System.in);
    System.out.println("Do you want to continue:");
    wantsToContinue = keyboard.nextBoolean();

} while (thePlayer.getBalance()>0 && wantsToContinue);

当我以这种方式设置它时,我得到非静态方法无法从静态上下文中引用。我需要避免为此逻辑使用单独的方法或对象。

【问题讨论】:

  • 搜索non static method cannot be referenced from a static context.
  • 你希望用第一行代码实现什么?类似的东西不属于循环内部,而不是外部吗?你应该写什么而不是那里的“String”?
  • 我有。但是我发现的一切都涉及创建一个对象的实例,我需要在分配范围内避免。无论如何谢谢。
  • @DavidWallace 我收到一条消息“从未使用过分配的值”,但是,如果我尝试在 do while 循环中移动布尔变量赋值,则无法访问 wantToContinue。此外,我尝试将 String 更改为 Boolean,但这也不起作用。我不确定你是不是这个意思。
  • 您不想在扫描仪上使用nextBoolean(),因为nextBoolean() 总是需要true 或false。您想使用返回 String 的方法 - next() 或 nextLine(),以便您可以检查 String 的实际含义。那么,一旦你得到了String,你将如何处理它?equalIgnoreCase 适合在哪里?

标签: java string boolean do-while


【解决方案1】:

equalsIgnoreCase 未在 String 类中声明为静态方法,但您将其用作 String.equalsIgnoreCase。因此错误“无法从静态上下文引用非静态方法”

【讨论】:

    【解决方案2】:

    试试这个

        String wantsToContinue="";
    
        do{
    
            rollOne=diceOne.roll();
            rollTwo=diceTwo.roll();
            rollTotal=rollOne+rollTwo;
            //BoardSquare thePlayer.setLocation(square[]);
    
    
            Scanner keyboard=new Scanner(System.in);
            System.out.println("Do you want to continue:? yes | no");
            wantsToContinue = keyboard.next();
    
        } while (thePlayer.getBalance()>0 && wantsToContinue.equalsIgnoreCase("yes"));
    

    在每次迭代提示是或否。如果您给出 yes,则循环将继续(也基于您的 getBalance 返回 >0)。或者它是终止。 equalsIgnoreCase("yes") 检查给定选项 yes 或 YES 或其组合。如果相等则返回 true。

    【讨论】:

    • 你也应该给出解释。仅仅给出代码并不是真正的答案。
    • 这不起作用。如果我回答“否”,则循环不会终止。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2021-01-31
    • 1970-01-01
    相关资源
    最近更新 更多