基本Java练习 - 需要帮助

时间:2016-11-20 13:08:00

标签: java

我几个星期以来一直在学习Java,所以很抱歉你们很多人会解决这个问题。它一直困扰着我的大脑。

以下是指示“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);

1 个答案:

答案 0 :(得分:1)

如果您在评论中尝试阅读自己的代码,我理解您的挫折感。 ;-)这几乎不可能。您可以编辑您的问题并在那里输入新的格式化代码。当我格式化它时,我得到:

    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
    }

此外,我认为这将更好地满足要求:

  

编写为freeBooks分配适当值的代码块   基于布尔变量isPremiumCustomer和...

的值

(我的重点)。我希望你能成功通过它。