所以,我刚开始为学校开设一个非常简单的项目,我想为体育场创建一个预订系统。我有一个二维阵列,可以创建一个简单的7X10阵列。但是,我想在阵列中间留出一些空间来代表球场中的球场/场地。我想知道怎么做?
如果可能的话,我在想数组中的数组吗?
到目前为止,这是我的代码(大部分来自此处的另一个问题):
package FootballMatch;
public class Seats {
public static void main(String[] args) {
System.out.print("\t\t Stadium Seating \n");
int seatArray[][]= new int[10][7];
int i, x, y = 1;
for(i = 0; i < 10; i++) {
for(x = 0; x < 7; x++) {
seatArray[i][x] = y;
y++;
} // end inner for
} // end outer for
for(int[] row : seatArray) {
printRow(row);
}
} // end of main
public static void printRow(int[] row) {
for (int i : row) {
System.out.print(i);
System.out.print(" \t");
}
System.out.println();
}
}
输出:
`Stadium Seating
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 32 33 34 35
36 37 38 39 40 41 42
43 44 45 46 47 48 49
50 51 52 53 54 55 56
57 58 59 60 61 62 63
64 65 66 67 68 69 70`
所以我希望数组的第三到第八行中的每个第3到第5个数字都不可见,如下所示:
`Stadium Seating
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 _ _ _ 20 21
22 23 _ _ _ 27 28
29 30 _ _ _ 34 35
36 37 _ _ _ 41 42
43 44 _ _ _ 48 49
50 51 _ _ _ 55 56
57 58 59 60 61 62 63
64 65 66 67 68 69 70`
请注意,所有这些数字都可能会更改为&#39; x&#39;在完成的程序中。 &#39; X&#39;意思是座位可用,空位意味着它的领域!
答案 0 :(得分:3)
关于ControlAltDel的建议,对这个问题(也允许以后扩展)的精心设计的答案是创建一个Seat
类来代表一个席位。
public class Seat{
private int index; //-1 if not available, > 0 otherwise
private boolean available;
/** Creates an available seat with index i. i > 0. */
public Seat(int i){
index = i;
available = true;
}
/** Creates a non-available seat. */
public Seat(){
index = -1;
available = false;
}
/** Return a string representation of this Seat. Its index if available, - otherwise */
public String toString(){
if(available) return index + "";
else return "-";
}
}
然后你可以创建一个代表你的体育场的Seat
矩阵:
public static void main(String[] args) {
System.out.print("\t\t Stadium Seating \n");
Seat seatArray[][]= new Seat[10][7];
int i, x, y = 1;
for(i = 0; i < 10; i++) {
for(x = 0; x < 7; x++) {
if(i >= 2 && i <= 7 && x >= 2 && x <= 4){
seatArray[i][x] = new Seat(); //Not available seat
} else {
seatArray[i][x] = new Seat(y);
}
y++;
}
}
for(Seat[] row : seatArray){ printRow(row); }
}
public static void printRow(Seat[] row) {
for (Seat s : row) {
System.out.print(s); //toString method called implicitly here.
System.out.print(" \t");
}
System.out.println();
}
答案 1 :(得分:0)
使用布尔数组表示某人可以占用这些位置。
为此,您必须更改打印方式。你必须使用如下代码:
// You must set canSeat at your will (true and false).
public static void print(int[][] seatArray, Boolean canSeat[][]) {
for(i = 0; i < 10; i++) {
for(x = 0; x < 7; x++) {
if(canSeat[i][x])
System.out.print(seatArray[i][x]);
else
System.out.print(" ");
System.out.print(" \t");
}
}
}