如何在 Java 中从 A-F 和 1-11 的范围内生成数字和字符序列,以模拟飞机座位系统。例如,要创建一个数组 {1A,1B,1C,1D,1E,1F,2A,2B etc...}.
我试过这样做,但它并没有完全按照我的意愿去做:
char[][] seats = new char[5][6]; // 30 seats
for(int i = 0; i < 5; i++ ){
seats[i][0] = 'A';
seats[i][1] = 'B';
seats[i][2] = 'C';
seats[i][3] = 'D';
seats[i][4] = 'E';
seats[i][5] = 'F';
}
每个座位由多个字符标识,因此请改用
String
数组。然后,您可以使用嵌套的 for 循环:
for (int i = 0; i < seats.length; i++)
for (int j = 0; j < seats[i].length; j++)
seats[i][j] = i + 1 + String.valueOf((char)(j + 'A'));
System.out.println(Arrays.deepToString(seats));
// [[1A, 1B, 1C, 1D, 1E, 1F], [2A, 2B, 2C, 2D, 2E, 2F], [3A, 3B, 3C, 3D, 3E, 3F], [4A, 4B, 4C, 4D, 4E, 4F], [5A, 5B, 5C, 5D, 5E, 5F]]
要在Java中从A-F和1-11的范围内生成数字和字符序列,可以使用这个函数
generateAirplaneSeats
它以行数和每行的飞机座位数作为方法参数,然后返回一个代表飞机座位的字符串数组:
public static String[] generateAirplaneSeats(final int numberRows, final int numberSeatsPerRow) {
String[] airplaneSeats = new String[numberRows * numberSeatsPerRow];
for(int row = 1; row <= numberRows; row++) {
for(int seat = 0; seat < numberSeatsPerRow; seat++) {
char airplaneSeatLetter = getAirplaneSeatLetter(seat);
String airplaneSeatNumber = getAirplaneSeatNumber(row, airplaneSeatLetter);
airplaneSeats[(row - 1) * numberSeatsPerRow + seat] = airplaneSeatNumber;
}
}
return airplaneSeats;
}
其中函数
getAirplaneSeatLetter
将飞机座位索引作为方法参数,然后返回适当的飞机座位字母。
例如,如果座位索引为
0
,则表示它对应一排的第一个座位,即座位A
。因此,函数 getAirplaneSeatLetter(0)
将返回字符 A
.
public static char getAirplaneSeatLetter(final int seatIndex) {
return (char) ('A' + seatIndex);
}
其中函数
getAirplaneSeatNumber
将行号和飞机座位字母作为方法参数,然后返回相应的飞机座位号。
例如,如果排号是
1
,飞机座位字母是A
,则对应第一排的第一个座位,即座位1A
。因此,函数 getAirplaneSeatNumber(1, 'A')
将返回字符串 1A
.
public static String getAirplaneSeatNumber(final int row, final char airplaneSeatLetter) {
return row + String.valueOf(airplaneSeatLetter);
}