Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 而循环永远不会完成_Java_Loops_While Loop - Fatal编程技术网

Java 而循环永远不会完成

Java 而循环永远不会完成,java,loops,while-loop,Java,Loops,While Loop,我的课程目标是: 写一份预售有限数量私人音乐会门票的申请。每位买家最多可购买6张门票。不超过75张票可以出售。执行一个程序,提示用户输入所需的票证数量,然后显示剩余票证数量。在实现中使用while循环。重复此操作,直到所有门票都售出,然后显示买家总数 我的循环关闭似乎有问题,因为即使循环变量达到其条件限制,它仍然会提示输入票证数量。知道为什么吗 import java.util.Scanner; public class TicketCounterHorn { public static

我的课程目标是:

写一份预售有限数量私人音乐会门票的申请。每位买家最多可购买6张门票。不超过75张票可以出售。执行一个程序,提示用户输入所需的票证数量,然后显示剩余票证数量。在实现中使用while循环。重复此操作,直到所有门票都售出,然后显示买家总数

我的循环关闭似乎有问题,因为即使循环变量达到其条件限制,它仍然会提示输入票证数量。知道为什么吗

import java.util.Scanner;

public class TicketCounterHorn {

  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int ticketsToBuy;
    int totalTickets =75;
    int buyers = 0;
    int ticketMax = 6;

    while (totalTickets >= 0) {
        System.out.print("How many tickets would you like to purchase: ");
        ticketsToBuy = in.nextInt();

        if (ticketsToBuy <= ticketMax && ticketsToBuy > 0) {

            if (ticketsToBuy < totalTickets) {
                totalTickets = totalTickets - ticketsToBuy;
                buyers++;
                System.out.println(ticketsToBuy);
                System.out.println(buyers);
                System.out.println(totalTickets);
            }
        }
    }

    System.out.println("the total number of buyers is: " + buyers);
  }
}

我认为应该将循环条件更改为:

while (totalTickets > 0)
否则,即使没有更多的东西可以卖,你也要继续卖

更新

正如David Conrad在评论中提到的,还有一个问题:


还有第二个问题。ticketsToBuy
if (ticketsToBuy < totalTickets) 
也应该是

if (ticketsToBuy <= totalTickets) {

谢谢,我试过了,但即使这样,它也没有显示买主的数量,只是不断地问有多少票。为什么这个答案会被否决?这是一个有效的建议。还有第二个问题。测试if ticketsToBuy=0{…}当totalTickets==0时,即使没有票,你确定要试着卖票吗?是的,我改变了这一点,但仍然有相同的问题思考如果剩下一张票,最后一次循环时,买家尝试购买最后一张票会发生什么。因为ticketsToBuy