【问题标题】:How to pass Strings through Booleans? yes for true, no for false?如何通过布尔值传递字符串?是为真,否为假?
【发布时间】:2020-10-15 00:21:03
【问题描述】:

我正在尝试编写我的第一个使用布尔值和 if/else 语句的程序。它让用户回答各种问题,并最终告诉他们应该在家吃饭还是在餐馆吃饭。这是通过用户输入“true”或“false”的 Scanner 对象来完成的。它似乎运作良好,但我的问题是,我如何允许用户为“真”输入“是”,为“假”输入“否”,而不是让他们输入这些词?我的作业指定他们应该使用是/否。

import java.util.Scanner;

public class HomeOrRestaurant {  
    
    public static void main(String args[]){     
        Scanner scan = new Scanner(System.in);
        
        System.out.println("yes/no");
        
        System.out.println("Did you get paid this week?");
            boolean paid = scan.nextBoolean();          
            if (!paid == true){
            System.out.println("Eat at home.");
            return;
        
        }
        
        else 
        System.out.println("Did you buy groceries this week?");
            boolean boughtGroceries = scan.nextBoolean(); 
            if (boughtGroceries == true){
            System.out.println("Eat at home.");
            return;
        }
            
        else
        System.out.println("Do you have leftovers at home?");
            boolean leftovers = scan.nextBoolean(); 
            if (!leftovers == true){
            System.out.println("Eat at home.");
            return;
        }
            
        else
        System.out.println("Are there enough leftovers for a meal?");
            boolean enoughLeftovers = scan.nextBoolean(); 
            if (!enoughLeftovers == true){
            System.out.println("Eat at a restaurant.");
        }

        else
        System.out.println("Eat at home.");
    }  
}

尝试将其中一项设置为“是”或“否”时...

        System.out.println("Did you get paid this week?");
            boolean paid = scan.nextBoolean();          
            if (!paid == yes){
            System.out.println("Eat at home.");
            return;
        
        }

我收到一条错误消息,告诉我找不到符号变量“yes”。作为回应,我尝试创建一个局部变量“是”,但这不起作用。我如何告诉我的程序“是”意味着“真实”?谢谢!

【问题讨论】:

  • 顺便说一下,不要比较布尔值;他们已经是布尔值了。直接说if (!paid)

标签: java if-statement boolean


【解决方案1】:

如果要输入字符串,则不要使用nextBoolean,可以使用nextLinenext

当你有你的字符串时,你可以测试它是否等于yes

if (paid.equalsIgnoreCase ("YES"))

编辑

由于您经常使用这种模式,我建议您将此代码包装到自己的方法中

【讨论】:

  • 或者,String input = scan.nextLine(); 然后boolean paid = input.equalsIgnoreCase("yes"); 然后if (paid)if (!paid)
  • 没问题。我也觉得if (!leftovers == true) 反模式值得关注。
  • 非常感谢!这正是我所需要的。
  • @Squatchy97 请注意,在实际应用程序代码中,您可以使用 BooleanUtils from Apache commons-lang3 之类的东西,但在本次作业中,您可能需要提供自己的实现。
猜你喜欢
  • 1970-01-01
  • 2022-07-31
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2012-04-30
  • 1970-01-01
相关资源
最近更新 更多