Java 如何获取用户输入并将其显示在阵列上?
我正在制作一张飞机座位表。我能够显示图表,并可以要求用户输入。我试着用他们的答案,把“X”放在他们输入状态的地方。我不知道如何将他们的输入显示在图表上,然后用X替换Java 如何获取用户输入并将其显示在阵列上?,java,arrays,Java,Arrays,我正在制作一张飞机座位表。我能够显示图表,并可以要求用户输入。我试着用他们的答案,把“X”放在他们输入状态的地方。我不知道如何将他们的输入显示在图表上,然后用X替换 import java.util.Scanner; class AirplaneSeating { public static void main(String[] args) { String[][] seatingChart = new String[10][4]; int rows = 10; int colum
import java.util.Scanner;
class AirplaneSeating {
public static void main(String[] args) {
String[][] seatingChart = new String[10][4];
int rows = 10;
int columns = 4;
Scanner inStr = new Scanner(System.in);
seatingChart = new String[rows][columns];
seatingChart[0][0] = "A1";
seatingChart[0][1] = "A2";
seatingChart[0][2] = "A3";
seatingChart[0][3] = "A4";
seatingChart[1][0] = "B1";
seatingChart[1][1] = "B2";
seatingChart[1][2] = "B3";
seatingChart[1][3] = "B4";
seatingChart[2][0] = "C1";
seatingChart[2][1] = "C2";
seatingChart[2][2] = "C3";
seatingChart[2][3] = "C4";
seatingChart[3][0] = "D1";
seatingChart[3][1] = "D2";
seatingChart[3][2] = "D3";
seatingChart[3][3] = "D4";
seatingChart[4][0] = "E1";
seatingChart[4][1] = "E2";
seatingChart[4][2] = "E3";
seatingChart[4][3] = "E4";
seatingChart[5][0] = "F1";
seatingChart[5][1] = "F2";
seatingChart[5][2] = "F3";
seatingChart[5][3] = "F4";
seatingChart[6][0] = "G1";
seatingChart[6][1] = "G2";
seatingChart[6][2] = "G3";
seatingChart[6][3] = "G4";
seatingChart[7][0] = "H1";
seatingChart[7][1] = "H2";
seatingChart[7][2] = "H3";
seatingChart[7][3] = "H4";
seatingChart[8][0] = "I1";
seatingChart[8][1] = "I2";
seatingChart[8][2] = "I3";
seatingChart[8][3] = "I4";
seatingChart[9][0] = "J1";
seatingChart[9][1] = "J2";
seatingChart[9][2] = "J3";
seatingChart[9][3] = "J4";
for(int i = 0; i < rows ; i++) {
for(int j = 0; j < columns ; j++) {
System.out.print(seatingChart[i][j] + " ");
}
System.out.println("");
}
System.out.println("What seat would you like to reserve? ");
String str = inStr.nextLine();
System.out.println("You chose: " + str);
}
}
import java.util.Scanner;
飞机等级{
公共静态void main(字符串[]args){
字符串[][]座位图表=新字符串[10][4];
int行=10;
int列=4;
扫描仪安装=新扫描仪(System.in);
seatingChart=新字符串[行][列];
座位图[0][0]=“A1”;
座位图[0][1]=“A2”;
海图[0][2]=“A3”;
座位图[0][3]=“A4”;
座位图[1][0]=“B1”;
座位图[1][1]=“B2”;
座位图[1][2]=“B3”;
座位图[1][3]=“B4”;
座位图[2][0]=“C1”;
座位图[2][1]=“C2”;
座位图[2][2]=“C3”;
座位图[2][3]=“C4”;
座位图[3][0]=“D1”;
座位图[3][1]=“D2”;
座位图[3][2]=“D3”;
座位图[3][3]=“D4”;
海图[4][0]=“E1”;
座位图[4][1]=“E2”;
座位图[4][2]=“E3”;
海图[4][3]=“E4”;
座位图[5][0]=“F1”;
座位图[5][1]=“F2”;
座位图[5][2]=“F3”;
座位图[5][3]=“F4”;
座位图[6][0]=“G1”;
座位图[6][1]=“G2”;
座位图[6][2]=“G3”;
座位图[6][3]=“G4”;
座位图[7][0]=“H1”;
座位图[7][1]=“H2”;
座位图[7][2]=“H3”;
海图[7][3]=“H4”;
座位图[8][0]=“I1”;
座位图[8][1]=“I2”;
座位图[8][2]=“I3”;
座位图[8][3]=“I4”;
座位图[9][0]=“J1”;
座位图[9][1]=“J2”;
海图[9][2]=“J3”;
座位图[9][3]=“J4”;
对于(int i=0;i
确保str是两个字符。取第一个字符(我猜它是一个字母字符),将其转换成一个数字,并将其存储为一个变量(比如,x)。对第二个字符(比如y)执行相同的操作。将座位图[x][y]=“x”设置为“x”,然后再次运行显示循环
我希望这不是一个太具体的答案,因为这显然是家庭作业。你只是想以任何方式显示吗? 您希望如何输入?有办法吗 您只需解析扫描器输入,并告诉用户像代码一样放置行、列
//Example: Input: 6,2
//Split the user input
String[] input = str.split(",");
//parse first number to make it the row
int rowuser = Integer.parseInt(input[0].trim());
//parse second number to make it the column
int columnuser = Integer.parseInt(input[1].trim());
//replace with "X" value the seatingChart[row][column]
seatingChart[rowuser][columnuser] = "X"
但是您仍然需要一个循环来再次显示座位表。考虑创建将行字母映射到相应数字的
HashMap
。给定用户输入,获取第一个字符并从哈希映射中获取适当的行索引。使用库函数将第二个字符转换为int
。现在,您的数组中有了索引,可以更改有问题的值。查看您的程序和座位的结构方式,您可以通过简单地解析和存储输入来实现这一点
char firstChar = str.toUpperCase().charAt(0);
char secondChar = str.charAt(1);
int first = ((int) firstChar) - 101; // ascii value - 101 for upper case A
int second = ((int) secondChar) - 1; // cast the character to an int, then -1 because it's 0 indexed.
那么,设置该值所需做的就是
seatingChart[first][second] = "X";
然后你可以把它再打印出来。这段代码可能会有帮助 假设在定义座椅时给出输入。例:H4
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
int x = (int)input.charAt(0)-65; //since 'A' has ASCII value of 65
int y = (int)input.charAt(1)-49; //since '0' has ASCII value of 49
// update seatingChart[x][y]
你可以初始化这个
seatingChart = new String[rows][columns];
seatingChart[0][0] = "A1";
seatingChart[0][1] = "A2";
seatingChart[0][2] = "A3";
seatingChart[0][3] = "A4";
seatingChart[1][0] = "B1";
seatingChart[1][1] = "B2";
seatingChart[1][2] = "B3";
seatingChart[1][3] = "B4";
seatingChart[2][0] = "C1";
seatingChart[2][1] = "C2";
seatingChart[2][2] = "C3";
seatingChart[2][3] = "C4";
seatingChart[3][0] = "D1";
seatingChart[3][1] = "D2";
seatingChart[3][2] = "D3";
seatingChart[3][3] = "D4";
seatingChart[4][0] = "E1";
seatingChart[4][1] = "E2";
seatingChart[4][2] = "E3";
seatingChart[4][3] = "E4";
seatingChart[5][0] = "F1";
seatingChart[5][1] = "F2";
seatingChart[5][2] = "F3";
seatingChart[5][3] = "F4";
seatingChart[6][0] = "G1";
seatingChart[6][1] = "G2";
seatingChart[6][2] = "G3";
seatingChart[6][3] = "G4";
seatingChart[7][0] = "H1";
seatingChart[7][1] = "H2";
seatingChart[7][2] = "H3";
seatingChart[7][3] = "H4";
seatingChart[8][0] = "I1";
seatingChart[8][1] = "I2";
seatingChart[8][2] = "I3";
seatingChart[8][3] = "I4";
seatingChart[9][0] = "J1";
seatingChart[9][1] = "J2";
seatingChart[9][2] = "J3";
seatingChart[9][3] = "J4";
像这样:
String[][] seatingChart = new String[rows][columns];
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
seatingChart[i][j] = "" + ((char)('A' + i)) + ((char)('1' + j));
}
}
然后您只需遍历数组,并找到匹配项:
for(int i = 0; i < rows ; i++) {
for(int j = 0; j < columns ; j++) {
if(seatingChart[i][j].equals(str)) {
System.out.print("XX" + " ");
} else {
System.out.print(seatingChart[i][j] + " ");
}
}
System.out.println("");
}
for(int i=0;i
您卡在什么部位?您是否在str
中正确地获取了值,但不知道如何将其转换为数组索引?您需要使用不同的数据结构,因为您还需要存储状态。您希望将“x”
而不是字符串“A1”
,“H3”
等。这取决于用户给出的字符串中的哪一个?感谢您的响应。是的,我得到str中的值,但不知道如何获取该值,并在座位表上将用户选择的值(str值)设为X。X是用来模拟座位有人坐。欢迎来到StackOverflow。虽然这可能是一个很好的答案,但对原始海报的澄清问题应该只放在帖子下方的评论中,而不要包含在答案中。
for(int i = 0; i < rows ; i++) {
for(int j = 0; j < columns ; j++) {
if(seatingChart[i][j].equals(str)) {
System.out.print("XX" + " ");
} else {
System.out.print(seatingChart[i][j] + " ");
}
}
System.out.println("");
}