2015-05-06 41 views
0

我正在創建一個飛機座位表。我能夠顯示圖表並可以要求用戶輸入。我正試圖接受他們的回答,並將「X」放在他們的輸入狀態。我不知道如何利用自己的輸入和圖表上顯示,然後用十如何獲取用戶輸入並將其顯示在我的陣列上?

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);  

    } 
} 
+1

你卡在什麼部分?你是否在'str'中正確得到了值,但不知道如何將它變成數組索引? –

+0

您需要使用不同的數據結構,因爲您需要存儲狀態 – Prashant

+0

您希望將'「x」'而不是字符串'「A1」'「,」H3「等取決於用戶中的哪些字符串原因呢? – user1803551

回答

0

你可以初始化這個

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)); 
     } 
    } 

而且回答你的問題是,一旦你有自己的輸入線:

System.out.println("What seat would you like to reserve? "); 
    String str = inStr.nextLine(); 

然後你只需要遍歷數組,並找到匹配:

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(""); 
    } 
0

取代它確保str是兩個字符。以第一個字符(我猜它會是一個字母字符),將其轉換爲數字,並將其存儲爲變量(例如x)。對第二個字符(例如,y)做同樣的處理。設置seatingChart [x] [y] =「X」然後再次運行你的顯示循環。

我希望這不是一個答案太具體,因爲這顯然是作業。

1

你只是想顯示任何方式嗎? 你想如何輸入?任何方式?

您可以解析掃描儀輸入並告訴用戶放置行,列就像您的代碼。

//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" 

但您仍然需要一個循環來再次顯示座位圖。

+0

歡迎來到StackOverflow。雖然這可能是一個很好的答案,但對原始海報的澄清問題只應在帖子下的評論中,不要包含在答案中。 – gvlasov

0

考慮創建HashMap<Character, Integer>,將行字母映射到相應的編號。給定用戶輸入,取第一個字符並從散列映射中獲取適當的行索引。使用庫函數將第二個字符轉換爲int。現在,您的數組中已有索引,並且可以更改有問題的值。

1

看看你的程序和座椅的結構方式,你可以通過簡單地解析和存儲輸入來實現這一點。

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"; 

然後,你可以再次打印出來。

0

此片段可以幫助

假定輸入是在座位被定義時給出的。例如: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] 
相關問題