【问题标题】:Does not print, loop and array error不打印,循环和数组错误
【发布时间】:2016-01-15 05:30:55
【问题描述】:

我必须创建一个包含 10 行的数组,每行有 6 列(它应该像船的座位表)。此外,我必须为这些地点分配乘客姓名并打印座位表。我必须通过请求输入乘客姓名和所需座位(行和列)来填充数组。如果座位可用,请分配给乘客。如果座位已经分配,​​我必须请求另一行和另一列。我必须不断重复这个输入过程,直到行值输入为负数。

之后,我必须打印乘客座位表,将所有未分配的座位列为“空”。

但是,我的程序没有按我希望的方式运行。这是我目前所拥有的:

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

        int row, column;
        String name;

        do {
            System.out.println ("Please enter your name");
            name = kb.nextLine();

            System.out.println ("Please enter a row or input a negative number to stop");
            row = kb.nextInt();

            if (row < 0) {
                SeatingChart (Seats);
            }

            System.out.println ("Please enter a column");
            column = kb.nextInt();

            if (Seats [row][column] == null) {
                Seats [row][column]= name;
            } else {
                System.out.println("Sorry this seat is alredy assigned");
            }
        }
        while (row >= 0);
    }

    public static void SeatingChart (String Seats[][])
    {
        for ( int r = 0; r< Seats.length ; r++) {
            for (int c = 0; c< Seats[r].length; c++) {
                if (Seats[r][c]==null) {
                    System.out.print("empty");
                } else {
                    System.out.print(Seats[r][c]+ " ");
                }
            }
        }
        System.out.println();
        System.out.println();
    }
}

【问题讨论】:

  • 你得到了什么 - 错误结果、部分结果、错误或异常?
  • @AMY 它只是停止提问

标签: java arrays loops if-statement methods


【解决方案1】:

这是你想要的吗?

//change kb.nextLine()
name = kb.next();

【讨论】:

    【解决方案2】:

    我会将所有这些都放在另一个 else 语句中:

    System.out.println ("Please enter a column");
    column = kb.nextInt();
    
    if (Seats [row][column] == null)
        Seats [row][column]= name;
    
    else
        System.out.println("Sorry this seat is alredy assigned");
    

    我还要补充

    System.out.println ("Please enter your name");
    name = kb.nextLine();
    

    进入前面提到的 else 语句,在请求列之前或之后。

    我要改变的另一件事是座位的显示方式。我建议将它们采用 10 x 6 格式。您可以使用额外的 if 语句来做到这一点。在“空”之后添加一个空格也有助于提高可读性。类似于以下内容:

    for ( int r = 0; r< Seats.length ; r++)
                for (int c = 1; c<= Seats[r].length; c++)
                {
                    if (Seats[r][c-1]==null)
                        System.out.print("empty ");
                    else
                    System.out.print(Seats[r][c-1]+ " ");
    
                    if((c % 6) == 0) {
                        System.out.println("\n");
                    }
    
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多