为什么我的布尔变量没有被识别? - Java

时间:2015-04-15 21:22:00

标签: java

我正在为我的大学课程创建一个披萨订购应用程序,并正在编写代码。在编码方面相当苛刻,我遇到了Eclipse的问题,告诉我两个布尔变量没有被使用,当我知道它们是什么时。

我的变量有愚蠢的名字,但在编写程序时我很容易记住。由于某些原因,我的Topping和DoubleCheeseBoolean变量在代码中未被识别,即使我使用它们时也没有出现错误。

这是我目前拥有的全部内容,有人可以告诉我我需要做些什么来解决我的布尔问题。

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in); // Creates Scanner

    // Variables
    String DoubleCheeseString;
    Boolean DoubleCheeseBoolean;

    Boolean Topping;
    int Topping1;
    int Topping2;

    int Attempts = 3;

    double Cost = 00.00;

    // Program
    // Asks the user if they would like a double cheese pizza
        System.out.println("Would you like double cheese for 50p more? (Answer with either 'yes' or 'no')");
        DoubleCheeseString = keyboard.nextLine();
        if (DoubleCheeseString == "yes") {
            DoubleCheeseBoolean = true;
        } else if (DoubleCheeseString == "no") {
            DoubleCheeseBoolean = false;
        } else {

        }

        // Asks the user if they would like a topping on their pizza
        Attempts = 3;
        while (Attempts > 0) {
            System.out.println("Would you like to add a topping to your pizza?");
            System.out.println("The first topping cost £1.00 and up to two more can be added for 50p each");
            System.out.println("(Answer with 'yes' or 'no')");
            if (keyboard.hasNext("yes")) {
                Topping = true;
            } else if (keyboard.hasNext("No")) {
                Topping = false;
            } else {
                System.out.println("Please enter 'yes' or 'no'. Anything else is invalid.");
                System.out.println("You have " + Attempts + " left before the program closes.");
                if (Attempts == 0) {
                    System.exit(0);
                }

3 个答案:

答案 0 :(得分:3)

使用变量并为它们分配是非常不同的事情。

例如:在这里,我分配变量但不使用它。

int x = 3;

例如:在这里,我使用变量。

if (x == 3) { // do something }

在您的情况下,您根本不使用变量,而您所做的只是分配值。

解决方案:如果你真的想要摆脱警告,你可以将它们打印出来或其他东西,这将解决问题。请注意,可以忽略未使用的变量警告而不会出现问题。或者,您可以删除它们及其分配,因为它无论如何都没有被使用。

如果您以后真的要使用这些值,只需单独保留警告,并在开始使用时自行纠正。

为了将来参考,请使用.equals()来比较您的字符串。使用==比较字符串时,结果几乎总是错误的。

如果用户输入无效输入,您可能还需要在测试是/否输入时包含else块。记住:永远不要相信用户输入!

答案 1 :(得分:0)

我没有看到它们被用在任何地方......你正在为它们分配值,但从不读它们。 Eclipse会抱怨这个(就像你看到的那样)。

答案 2 :(得分:0)

您的代码中存在某些不会设置Topping布尔值的分支条件。

以下是相关代码:

    if (keyboard.hasNext("yes")) {
        Topping = true;
    } else if (keyboard.hasNext("No")) {
        Topping = false;
    } else {

因此,如果用户输入“是”或“否”以外的内容,则永远不会使用该变量。这段代码也一样:

    if(DoubleCheeseString=="yes"){
        DoubleCheeseBoolean=true;
    }else if(DoubleCheeseString=="no"){
        DoubleCheeseBoolean=false;
    }else{

    }

您只需使用False初始化变量即可修复警告。