Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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_Switch Statement - Fatal编程技术网

Java 递增开关中的计数器,该计数器确定某个内容何时已满

Java 递增开关中的计数器,该计数器确定某个内容何时已满,java,switch-statement,Java,Switch Statement,我有一个类,它包含一辆公共汽车可以搭载多少乘客的变量。可乘坐57座乘客、2辆轮椅、2辆婴儿车和27名站立人员 在main类中,我有一个switch语句,用户可以在这4种乘客类型中进行选择(我有一个名为Menu的方法,用户可以从中进行选择),根据选择的类型,它将属于switch中的4种情况之一 在每个开关中,我都有一个计数器,每当用户选择该情况时,计数器将递增1。然而,当这个计数器等于公共汽车上的座位数时,它应该写上它已经满了 我的问题是:每次我选择箱子时,计数器都会一直递增,所以即使它大于可用座

我有一个类,它包含一辆公共汽车可以搭载多少乘客的变量。可乘坐57座乘客、2辆轮椅、2辆婴儿车和27名站立人员

在main类中,我有一个switch语句,用户可以在这4种乘客类型中进行选择(我有一个名为Menu的方法,用户可以从中进行选择),根据选择的类型,它将属于switch中的4种情况之一

在每个开关中,我都有一个计数器,每当用户选择该情况时,计数器将递增1。然而,当这个计数器等于公共汽车上的座位数时,它应该写上它已经满了

我的问题是:每次我选择箱子时,计数器都会一直递增,所以即使它大于可用座位数,它也不会停止递增

    Menu ();
    boolean choice = true;
    do {
    int passengerType = input.nextInt();
    switch (passengerType) {
        case 1:
            int occupiedSeat=0;
            if (bus1.getSeats() > occupiedSeat) {
                occupiedSeat ++;
                bus1.setSeats(occupiedSeat);
                System.out.println("One seatpassenger onboard. ");
                } else {
                System.out.println("No available seats left.");
                } Menu ();
            break; 

           //Same with the other three cases

             } 
         } while(choice);

我也尝试过for循环,但也不起作用。有人知道我做错了什么吗

问题是您正在创建
int-occupiedSeat=0
开关情况下
语句中,它将导致
occupiedSeat
始终小于
bus1.getSeats()

您需要声明
occupiedSeat
退出
do while
循环:

int occupiedSeat=0;

do {

} while ()

声明
int-occupiedSeat=0编码,而不是在循环中进行,否则每次迭代时会将值重新初始化为
0

int occupiedSeat=0;
do {
int passengerType = input.nextInt();
     switch (passengerType) {
        ...
     }

} while(choice);

您需要声明
int-occupiedSeat=0
开关之外
,因为每次运行它时,它的get value
occupiedSeat=0

 Menu ();
    int occupiedSeat=0;
    boolean choice = true;
    do {
    int passengerType = input.nextInt();
    switch (passengerType) {
        case 1:
            if (bus1.getSeats() > occupiedSeat) {
                occupiedSeat ++;
                bus1.setSeats(occupiedSeat);
                System.out.println("One seatpassenger onboard. ");
                } else {
                System.out.println("No available seats left.");
                } Menu ();
            break; 

           //Same with the other three cases

             } 
         } while(choice);

最好为乘客类型定义一个枚举。