2013-09-21 22 views
0

總而言之,此代碼應該要求提供客戶名稱,成員級別和原始購買價格。它應該將所有這些變量存儲在它們各自的變量中,如果輸入的是接受的成員級別以外的內容,程序應該退出。儲存所有變量後,客戶姓名,會員等級,原始購買價格,促銷價格和節省的金額應以本文末尾的格式打印出來。另外,你能告訴我,如果我的變量命名正確,並且整個代碼格式正確。預先感謝任何幫助!打印客戶名稱,折扣等級,原始購買價格,促銷價格和已保存金額的Java代碼

import java.util.*; 
public class Discount{ 
    public static void main(String[] args){ 
     Scanner keyboard = new Scanner(System.in); 
     double purchase = 0.0; 
     double platinum = (purchase * .2); 
     double gold = (purchase * .15); 
     double silver = (purchase * .1); 
     String Platinum = null; 
    String Gold = null; 
    String Silver = null; 
    String customerName = null; 
    String level = null; 
    double discount = 0.0; 

    System.out.print("Please enter a customer name: "); 
    customerName = keyboard.nextLine(); 
    System.out.print("Please enter the customer's member level: "); 
    level = keyboard.nextLine(); 

如果打印除Silver,Gold或Platinum以外的任何內容,此部分應該退出程序;然而,無論輸入什麼內容,它都將退出。如果我將這部分退出,它將繼續詢問原始購買價格的多少,但不會打印任何結果。

  if (level != "Platinum" || level != "Gold" || level != "Silver") 
    { 
     System.exit(0); 
    } 

    System.out.print("Please enter the origianl purchase price: "); 
    purchase = keyboard.nextDouble(); 

    if (level.equals(Platinum) && purchase > 500) 
    { 
     discount = (platinum - (purchase*.05)); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 25% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Platinum)) 
    { 
     discount = (platinum); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 20% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Gold)) 
    { 
     discount = (gold); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 15% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Silver)) 
    { 
     discount = (silver); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 10% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    /* Example: 
      Congratulations, Marge Simpson! 
    As a Silver level cardholder, you received a 10% discount during Bedlam. 
    Original purchase price: $500.20 
    Promotional price: $450.18 
    Amount saved: $50.02 */ 
} 
} 
+0

一件事我注意到,當時你爲什麼有'System.out.printf(「%2F \ n」,「原著購買價格:$」 +購買);'對於每種情況?第一張和最後3張照片可以(讀取應該)全部完成,不管等級如何,並且應該在任何if語句之外。 – CamelopardalisRex

+0

@AlexBaldwin你可以爲我貶低這件事嗎?對不起,我對此很新。 – gdhc21

+0

我發佈了一個答案來處理這個請求。 – CamelopardalisRex

回答

2

由於比較檢查不正確,您的程序不會退出,因爲錯誤的客戶級別通過。您需要使用equals方法這裏字符串比較:

if (level != "Platinum" || level != "Gold" || level != "Silver") 

改變它

if (!level.equals("Platinum") || !level.equals("Gold") || !level.equals("Silver")) 

!=不會字符串的內容進行比較,而是將檢查對象平等。

編輯威利答案,我意識到,你需要使用& &,而不是||在你的支票中。所以,正確的條件應該是:

if (!level.equals("Platinum") && !level.equals("Gold") && !level.equals("Silver")) 
+0

謝謝!我認爲它不會這樣工作,因爲下面的那些必須使用.equals(),但我不知道如何寫出來。它仍然沒有列出結果,你有什麼建議嗎? – gdhc21

+0

@ gdhc21你有沒有使用&&在你的if check或||? –

+0

是的,我已經改變了它 – gdhc21

0

因爲解釋我的意見將是我在我想要的方式另一條評論微不足道的大腦幾乎是不可能的,這裏是一個answer到您的評論:

部分你的代碼是:

if (level.equals(Platinum) && purchase > 500) 
    { 
     discount = (platinum - (purchase*.05)); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 25% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Platinum)) 
    { 
     discount = (platinum); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 20% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Gold)) 
    { 
     discount = (gold); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 15% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 
    else if (level.equals(Silver)) 
    { 
     discount = (silver); 
     System.out.println("Congratualations, " + customerName + "!"); 
     System.out.println("As a " + level + " level cardholder, you have received a 10% discount during Bedlam."); 
     System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
     System.out.printf("%.2f\n", "Promotional price: $" + discount); 
     System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
    } 

而在此代碼爲每一種情況下寫出來System.out.println("Congratualations, " + customerName + "!");一次,並在每種情況下它們是相同的。我的建議是寫你這樣的代碼:

if (level != "Platinum" || level != "Gold" || level != "Silver") 
{ 
    System.exit(0); 
} 

System.out.print("Please enter the origianl purchase price: "); 
purchase = keyboard.nextDouble(); 

System.out.println("Congratualations, " + customerName + "!"); 

if (level.equals(Platinum) && purchase > 500) 
{ 
    discount = (platinum - (purchase*.05)); 
    System.out.println("As a " + level + " level cardholder, you have received a 25% discount during Bedlam."); 
} 
else if (level.equals(Platinum)) 
{ 
    discount = (platinum); 
    System.out.println("As a " + level + " level cardholder, you have received a 20% discount during Bedlam."); 
} 
else if (level.equals(Gold)) 
{ 
    discount = (gold); 
    System.out.println("As a " + level + " level cardholder, you have received a 15% discount during Bedlam."); 
} 
else if (level.equals(Silver)) 
{ 
    discount = (silver); 
    System.out.println("As a " + level + " level cardholder, you have received a 10% discount during Bedlam."); 
} 
System.out.printf("%.2f\n", "Origianl purchase price: $" + purchase); 
System.out.printf("%.2f\n", "Promotional price: $" + discount); 
System.out.printf("%.2f\n", "Amount saved: $" + (purchase-discount)); 
+0

我喜歡這種方式更好!謝謝! – gdhc21

+0

它打印出來:Congratualations,Marge Simpson! 線程「main」中的異常java.util.IllegalFormatConversionException:f!= java.lang.String at java.util.Formatter $ FormatSpecifier.failConversion(Unknown Source) at java.util.Formatter $ FormatSpecifier.printFloat(Unknown Source ) at java.util.Formatter $ FormatSpecifier.print(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream。 printf(未知來源) 在Discount.main(Discount.java:62) – gdhc21

+0

我明白了爲什麼,我看到你的問題!這樣的行:'else if(level.equals(Gold))'應該是'else if(level.equals(「Gold」))'這就是爲什麼你之前沒有打印,爲什麼你現在得到一個錯誤。 – CamelopardalisRex

相關問題