我必须创建一个包含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();
}
}
答案 0 :(得分:0)
是你想要的吗?
//change kb.nextLine()
name = kb.next();
答案 1 :(得分:0)
我将所有这些都放在另一个声明中:
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();
进入前面提到的其他声明,无论是在要求列之前还是之后。
我要改变的另一件事是座位的显示方式。我建议以10 x 6格式使用它们。您可以使用额外的if语句来完成此操作。在&#34;空&#34;之后添加一个空格也有助于提高可读性。如下所示:
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");
}
}