为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确嵌套循环

如何正确嵌套循环

长风秋雁 2022-09-01 16:43:42
我很难弄清楚为什么当我运行我的代码时,它会跳过所有的if语句,只是把无效。我有一个2d数组,其值表示电影院,我应该出售门票,用户应该输入一笔钱来确定他们将坐在哪里,这是他们从选择中可以负担得起的最昂贵的座位。该人获得的座位应从任何数字更改为0。最后,我需要打印带有零的新数组。这是我尝试过的:public static void main(String[] args) {    Scanner in = new Scanner (System.in);    boolean done = false;        //initial seating chart    int [] [] table =         {            {10, 10, 10, 10, 10, 10, 10, 10, 10, 10},            {10, 10, 10, 10, 10, 10, 10, 10, 10, 10},            {10, 10, 10, 10, 10, 10, 10, 10, 10, 10},            {20, 20, 20, 20, 20, 20, 20, 20, 20, 20},            {20, 20, 20, 20, 20, 20, 20, 20, 20, 20},            {30, 30, 30, 30, 30, 30, 30, 30, 30, 30},            {40, 40, 40, 40, 40, 40, 40, 40, 40, 40},            {40, 40, 40, 40, 40, 40, 40, 40, 40, 40},            {50, 50, 50, 50, 50, 50, 50, 50, 50, 50},        };    while (!done) {        int row; int col;        //search seating chart        for (row=0; row<9; row++) {            for (col=0; col<8; col++) {                System.out.printf("Enter maximum amount that you would like to spend on the tickets: ");                int amount = in.nextInt();                if (table[row][col]==10 && 10<=amount && amount<20) {                table[row][col]=0;                    System.out.printf("Ticket located at Row %d Seat %d purchased for 10\n", row+1, col+1);                    System.out.print("Would you like to purchase additional tickets? (Y/N) " + in.next());                    if (in.hasNext("y")) {                        done = false;                    }                    else {done = true;                    }                    }
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

这是一个更好地理解的示例,我在这里涵盖了一个案例,因为其余的都相当相同


//private variable here so we could find and book seat through method findAvailableSeat()

private static int[][] table = { { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },

        { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 },

        { 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 }, { 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },

        { 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }, { 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 },

        { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 }, };

public static void main(String[] args) {


    Scanner in = new Scanner(System.in);

    boolean done = false;

    // initial seating chart


    while (!done) {

        int row;

        int col;

        // search seating chart

        System.out.printf("Enter maximum amount that you would like to spend on the tickets: ");

        int amount = in.nextInt();

        if (10 <= amount && amount < 20) {

            String location = findAvailableSeat(10);//store the indexes in a variable to show the user later

            if(location != null) {

                String[] locationList = location.split(",");

                row = Integer.parseInt(locationList[0]);

                col = Integer.parseInt(locationList[1]);

                System.out.printf("Ticket located at Row %d Seat %d purchased for 10\n", row + 1, col + 1);

                System.out.print("Would you like to purchase additional tickets? (Y/N) ");

                String resp = in.next(); //this statement is needed as sometimes with in.next() rushes to user input without printing text

                if (resp.equals("Y")) {

                    done = false;

                } else {

                    done = true;

                }

            }

            else 

                System.out.printf("No available seat found\n");

        }

    }

}

在方法中,我们有


private static String findAvailableSeat(int i) {

    // TODO Auto-generated method stub

    for (int row=0; row<9; row++) {

        for (int col=0; col<8; col++) {

            if(table[row][col]==i) {

                //find the seat location, set location to 0 and then return indices to show in user result

                table[row][col] = 0;

                return row + "," + col;

            }

        }

    }

    return null;

}


查看完整回答
反对 回复 2022-09-01
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信