基本Java练习-需要帮助

基本Java练习-需要帮助,java,Java,我只学了几周Java,所以对于你们中的许多人能够轻松解决这个问题,我深表歉意。它一直在扰乱我的大脑 以下是说明“在线图书仓库为高级客户提供每购买5本或更多书籍1本免费书籍,并为每购买8本或更多书籍提供2本免费书籍。 它为普通客户提供一本免费书,每次购买7本或更多的书,提供2本免费书,每次购买12本或更多的书。 编写一段代码,根据布尔变量isPremiumCustomer和int变量nbooksPurchased的值为freeBooks分配适当的值 代码编译没有错误,但结果不正确…帮助 boole

我只学了几周Java,所以对于你们中的许多人能够轻松解决这个问题,我深表歉意。它一直在扰乱我的大脑

以下是说明“在线图书仓库为高级客户提供每购买5本或更多书籍1本免费书籍,并为每购买8本或更多书籍提供2本免费书籍。 它为普通客户提供一本免费书,每次购买7本或更多的书,提供2本免费书,每次购买12本或更多的书。 编写一段代码,根据布尔变量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);
boolean isPremiumCustomer=false;
int自由书=0;
扫描仪=新的扫描仪(System.in);
System.out.println(“输入图书编号:”);
int nbooksPurchased=scanner.nextInt();
System.out.println(“是优质客户吗?(y/n):”;
字符串ans=scanner.next();
如果(ans.equals(“y”)| | ans.equals(“y”)&&(nbooksPurchased>4&(nbooksPurchased=8)){
isPremiumCustomer=true;
免费图书=2;
}否则如果(ans.equals(“n”)| ans.equals(“n”)和&(nbooksPurchased>=7和(nbooksPurchased=12)){
免费图书=2;
}
System.out.println(“免费图书:+免费图书”);

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

    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;
        }
    }
此外,我认为这将更好地满足以下要求:

编写为freeBooks指定适当值的代码块 基于布尔变量isPremiumCustomer和


(我的重点)。我希望你能顺利度过难关。

定义“结果不正确”。输入和(不正确)是什么输出。此外,您应该首先尝试使用调试器逐步完成它。最后,我建议您尝试稍微更改流程-将输入检查与购买的
nbooksPurchased
的检查隔离开来。您是否尝试过调试代码,以查看与预期不同的地方?预期的结果是什么?结果是什么结果如何?很抱歉,像我说的这些家伙很新…还没有涉及到课程调试!输入/输出示例:“24”和“Y”预期输出应该是“2”,但返回为“1”((ans.equals(“Y”)| ans.equals(“Y”))在每个OR条件下使用括号。
    if (isPremiumCustomer) {
        // put if-else for premium customers here
    } else {
        // put if-else for regular customers here
    }