簡體   English   中英

不知道我在做什么錯(布爾標志)

[英]Not sure what i'm doing wrong here (Boolean flag)

這是我的作業代碼段。 我似乎無法使布爾標志正常工作。 當我嘗試找出答案時,每個名稱都會獲得折扣,或者每個名稱都不會獲得折扣。 為了澄清名稱,Mike或Diana應該給予折扣。

String firstName;     //user's first name  
boolean discount = false;  //flag, true if user is eligible for discount 
int inches;       //size of the pizza
char crustType;     //code for type of crust
String crust; //name of crust
double cost = 12.99;    //cost of the pizza
final double TAX_RATE = .08; //sales tax rate
double tax;       //amount of tax
char choice;      //user's choice
String input;      //user input
String toppings = "Cheese "; //list of toppings 
int numberOfToppings = 0;  //number of toppings

//prompt user and get first name
System.out.println("Welcome to Mike and Diane's Pizza");
System.out.print("Enter your first name:  ");
firstName = keyboard.nextLine();

if (firstName == "mike" || firstName == "diana" || firstName == "Mike" || firstName == "Diana" ||
firstName == "MIKE" || firstName == "DIANA")
{
discount = true;
}

if (discount = true)
{
cost  -= 2.0;
System.out.println ("You are eligible for a $2 discount.");

首先,為了比較字符串,請不要使用== 您需要按照此SO問題使用String#equals()方法。

if (firstName == "mike" || firstName == "diana" || firstName == "Mike" || firstName == "Diana" || firstName == "MIKE" || firstName == "DIANA")

將被替換

if (firstName.equals("mike") || firstName.equals("diana") || firstName.equals("Mike") || firstName.equals("Diana") || firstName.equals("MIKE") || firstName.equals("DIANA"))

但是,正如Gavin在對原始問題的評論中所說的那樣,最好將整個字符串轉換為大寫或小寫,以減少比較。 或者,按照Pshemo的評論,使用equalsIgnoreCase()

您還需要更改:

if (discount = true)

這將true的值分配給變量discount ,以

if (discount == true)

或者,根據Pshemo的評論,

if (discount)

我已經用日食檢查了您的代碼。 使用

if(firstName == "mike" || firstName == "diana" || firstName == "Mike" || firstName == "Diana" ||firstName == "MIKE" || firstName == "DIANA")

是問題,因為比較這樣的字符串時遇到問題。 您必須將其更改為

if (firstName.equals("mike")){
    discount = true;
}

然后請記住,折扣是一個布爾變量。 因此,您不必比較它是否正確。

if (discount) //if will check whether it's true or not if provided with a condition,discount is boolean, so need of comparison

對於布爾運算符將非常簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM