簡體   English   中英

基本 Java 練習 - 需要幫助

[英]Basic Java exercise - Help needed

這是說明

Online Book Depot 為高級客戶每購買 5 本書或更多書提供 1 本書,每購買 8 本書或更多書提供 2 本書免費。

常客每購買7本書或更多書免費贈送1本書,每購買12本書或更多書免費贈送2本書。

編寫代碼塊,根據布爾變量 isPremiumCustomer 和 int 變量 nbooksPurchased 的值為 freeBooks 分配適當的值

代碼編譯沒有錯誤,但結果不正確:

boolean isPremiumCustomer = false;
    int freeBooks = 0;
    Scanner scanner = new Scanner(System.in);
    System.out.println("Enter the no of books:");
    int nbooksPurchased = scanner.nextInt();
    System.out.println("is Premium customer?(y/n):");
    String ans = scanner.next();
    if (ans.equals("y") || ans.equals("Y") && (nbooksPurchased >4 && (nbooksPurchased <8))) {
        isPremiumCustomer = true;
        freeBooks = 1;
    }else if (ans.equals("y") || ans.equals("Y") && (nbooksPurchased >=8 )) {
        isPremiumCustomer = true;
        freeBooks = 2;
    }else if (ans.equals("n") || ans.equals("N") && (nbooksPurchased >=7 && (nbooksPurchased <=11))) {
        freeBooks = 1;
    }else if (ans.equals("n") || ans.equals("N") && (nbooksPurchased >=12 )){
        freeBooks = 2;
        }
        System.out.println("Free Books:" + freeBooks);

在評論中閱讀您自己的代碼幾乎是不可能的。 當我格式化它時,我得到:

if (ans.equals("y") || ans.equals("Y")) {
    isPremiumCustomer = true;
}
if (nbooksPurchased >= 3 && (nbooksPurchased <= 7)) {
    freeBooks = 1;
} else if (nbooksPurchased >= 8) {
    freeBooks = 2;
}
if (ans.equals("n") || ans.equals("N")) {
    if ((nbooksPurchased >= 7 && (nbooksPurchased <= 11))) {
        freeBooks = 1;
    } else if (nbooksPurchased >= 12) {
        freeBooks = 2;
    }
}

這樣做的主要問題是中間 if-else 構造if (nbooksPurchased >= 3 && (nbooksPurchased <= 7)) {對所有客戶執行,而不僅僅是高級客戶。 因此,購買 3 或 6 本書的普通客戶將獲得 1 本免費書籍,而只有高級客戶在購買此類書籍時才能獲得。 如果他們購買 7 個或更多,則執行進入if (ans.equals("n") || ans.equals("N")) { ,並且您已獲救。

另一個問題只是一個錯字, nbooksPurchased >= 3對於高級客戶來說應該是 5。

大多數情況下工作正常。

這會更清楚(因此你自己更容易糾正錯誤):

if (isPremiumCustomer) {
    // put if-else for premium customers here
} else {
    // put if-else for regular customers here
}

暫無
暫無

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

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