2016-03-23 45 views
0

我試圖創建一個程序來生成飛機票,然後詢問用戶是否想查看乘客列表。將記錄存儲在for循環數組中並顯示它們

我很苦惱的是,在每個輸入了他們詳細信息的用戶之後,他們必須被添加到乘客名單中。 因此,如果用戶1輸入他的詳細信息,並且必須詢問他們是否想要看到乘客名單(到目前爲止在乘客名單下將只有一條記錄),那麼用戶2輸入他的詳細信息,它必須詢問用戶是否想要看到乘客名單和用戶2的詳細信息必須添加到乘客名單(所以我們將在乘客名單下有2條記錄)等等。

請協助。

public class Question12 { 

    public static void main(String[] args) { 
       double random = Math.random()* 69 + 1; 
       String q; 
     Scanner in = new Scanner(System.in); 
     String[][] PlaneTicket = new String[3][3]; 

     for (int row = 0; row < 67; row++) { 


      System.out.print("Enter name:");   
      PlaneTicket[row][0] = in.next(); 

      System.out.print("Enter surname: "); 
      PlaneTicket[row][1] = in.next(); 


      System.out.print("Enter a ID: "); 
      PlaneTicket[row][2] = in.next(); 

      System.out.println("************Airport**********"); 
      System.out.println("Seat number: " + Math.round(random)); 
      System.out.println("Name: " + PlaneTicket[row][0]); 
      System.out.println("Surname: " + PlaneTicket[row][1]); 
      System.out.println("ID: " + PlaneTicket[row][2]); 
      System.out.println("*****************************"); 

      System.out.println("Do you want to view the passanger list: " + "(Yes/No)"); 
      q = in.next(); 

      if ("Yes".equals(q)) { 
      System.out.println("Name  Surname  ID  Seat Number"); 
      System.out.println("----------------------------------------"); 
      System.out.println(PlaneTicket[row][0]+" "+PlaneTicket[row][1]+"  "+PlaneTicket[row][2]+ " "+ Math.round(random)); 
+0

你的代碼在底部被切斷...... – Ceelos

+1

這裏你的情況下,你可以只存儲第一個3-passanger信息,然後你會得到ArrayIndexOutOfBoundException。 –

+0

對不起,這是我所有的代碼。它只是缺少一個支架。 –

回答

1

如果你只是想到目前爲止打印所有輸入的值,你可以這樣做:

System.out.println("Name  Surname  ID  Seat Number"); 
System.out.println("----------------------------------------"); 

for (int k = 0; k <= row; k++) { 
    System.out.println(PlaneTicket[k][0] + " " + PlaneTicket[k][1] + "  " + PlaneTicket[k][2] + " " + Math.round(random)); 
} 

是否回答你的問題?

一些言論

這裏是你的一些修復的主要方法,如前所述請做一些重新設計(見我的話):

public static void main(String[] args) { 
    final int maxPassengers = 67; 

    double random = Math.random() * 69 + 1; 
    String q; 
    Scanner in = new Scanner(System.in); 
    String[][] PlaneTicket = new String[maxPassengers][4]; 

    for (int row = 0; row < maxPassengers; row++) { 
     System.out.print("Enter name:"); 
     PlaneTicket[row][0] = in.next(); 

     System.out.print("Enter surname: "); 
     PlaneTicket[row][1] = in.next(); 

     System.out.print("Enter a ID: "); 
     PlaneTicket[row][2] = in.next(); 

     // you should keep the SeatNumber 
     PlaneTicket[row][3] = String.valueOf(Math.round(random)); 

     System.out.println("************Airport**********"); 
     System.out.println("Seat number: " + PlaneTicket[row][3]); 
     System.out.println("Name: " + PlaneTicket[row][0]); 
     System.out.println("Surname: " + PlaneTicket[row][1]); 
     System.out.println("ID: " + PlaneTicket[row][2]); 
     System.out.println("*****************************"); 

     System.out.println("Do you want to view the passanger list: " + "(Yes/No)"); 
     q = in.next(); 

     if ("Yes".equalsIgnoreCase(q) || "y".equalsIgnoreCase(q)) { 
      System.out.println("Name  Surname  ID  Seat Number"); 
      System.out.println("----------------------------------------"); 

      for (int k = 0; k <= row; k++) { 
       System.out.println(PlaneTicket[k][0] + " " + PlaneTicket[k][1] + "  " + PlaneTicket[k][2] + " " + PlaneTicket[row][3]); 
      } 
     } 
    } 
} 
+0

非常感謝。我只是測試它,它完美的作品。 –

+0

我沒有投票回答。 –

+1

我做到了,但是由於您添加了有關數組大小的評論,我將其撤銷。 +1 – user8

0

你需要創建一個方法displayList(String[][] seats)並調用它每一次客戶類型"Yes"。這種方法將有相似的循環(一個或多個),並顯示當前列表

for (int row = 0; row < 67; row++) { ....} 
0

您初始化一個二維數組PlaneTicket = new String[3][3]和你運行它高達66 ..清楚地給出了一個IndexOutOfBounds Exception。最好的辦法是,避免使用幻數,並將它們放在一個變量中,例如rowcolumn,然後迭代它。

否則它看起來沒問題。

二,小心使用的名單數組。你的意思是乘客列表或只是一個陣列

看起來你有它在底部,但你錯過了一些括號。固定索引後,它應該工作。

相關問題