2017-02-19 117 views
0

有人能告訴我爲什麼我的baggage不能打印?爲什麼LinkedList被打印爲空白?

對於我輸入的乘客名稱,比如約翰。

對於國家代碼我輸入:BI

對於航班號我輸入:095

行李我可以輸入任何金額的數量。

比方說,我進入:約翰,BI,095,3

這就是我得到:[John with baggage(s) [, , ]]時,我應該得到 [John with baggage(s) [BI0950, BI0951, BI0952]]

很抱歉,如果代碼是相當混亂。

它被修改。多謝你們。

import java.util.*; 

public class baggageSys{ 

    public static String getUser_command(){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.print("Enter command B-baggage, n-next, q-quit"); 
    String s = keyboard.nextLine(); 
    return s; 
    } 

    public static String getUser_flight(){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please enter the flight number"); 
    String s = keyboard.nextLine(); 
    return s; 
    } 

    public static String getPassenger(){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please enter passenger name"); 
    String s = keyboard.nextLine(); 
    return s; 
    } 

    public static String getUser_country(){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please enter the country code"); 
    String s = keyboard.nextLine(); 
    return s; 
    } 

    public static int getUser_number(){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Please enter number of baggage"); 
    int s = keyboard.nextInt(); 
    return s; 
    } 

    public static String next(ListIterator<Passenger> passenger){ 
    String k = ""; 
    passenger.next(); 
    return k; 


    } 

    public static String makeBaggage(String country, String flight, int num){ 
    return country + flight + num; 
    } 

    public static void main(String args[]) { 

    LinkedList<Passenger> passenger = new LinkedList<Passenger>(); 
    ListIterator<Passenger> iterator = passenger.listIterator(); 
    LinkedList<String> baggage = new LinkedList<String>(); 

    String command = ""; 

    while (!command.equals("q")){ 
     command = getUser_command(); 

    if(command.equals("B") || command.equals("b")){ 
     String p = ""; 
     p = getPassenger(); 
     passenger.add(new Passenger(p)); 

     // command = getUser_command(); 

     String country = ""; 
     country = getUser_country(); 


     String flight = ""; 
     flight = getUser_flight(); 


     int amount = 0; 
     amount = getUser_number(); 


      String[] bg = new String[amount]; 

     for(int i = 0; i < amount; i++){ 
     bg[i] = makeBaggage(country, flight, i); 
     baggage.add(bg[i]); 
     System.out.println(bg[i]); 

     passenger.getLast().setBaggages(baggage); 
     } 

     System.out.println(passenger); 


    } else if(command.equals("n")){ 
     next(iterator); 
    } 
    else 
     System.out.println("Enter 'q' to end the program"); 

    } 

    } 

public static class Passenger { 

    String passengers; 
    List<String> baggage; 

    public Passenger(String passengers) { 
     this.passengers = passengers; 
     baggage = Collections.emptyList(); 
    } 

    public void setBaggages(List<String> baggage) { 
     this.baggage = baggage; 
    } 

    @Override 
    public String toString() { 
     return passengers + " with baggage(s) " + baggage; 
    } 
} 
} 
+3

調試你的'makeBaggage'方法。或者,呃,只是讀它。 –

+1

您可能還想考慮一下您認爲'next(ListIterator )'方法應該做什麼。 –

+0

@AndyTurner我還在研究next()方法。我很抱歉,但是剛讀完它意味着什麼? –

回答

1

你不是在你的makeBaggage方法返回任何東西,因爲你可以將它返回x變量,也不會被設置循環內的循環後看到,在這種情況下,你的循環是沒用的。

public static String makeBaggage(String country, String flight, int num){ 

    String x = ""; 

    for(int i = 0; i < num; i++){ 
    String[] bgs = new String[num]; 
    bgs[i] = country + flight + i; 
    // System.out.println(bgs[i]); 
    } 
    return x; 
} 

我想這就是你要找的人:

public static String makeBaggage(String country, String flight, int num){ 
    return country + flight + num; 
} 

代碼中的這個特定行:

for(int i = 0; i < amount; i++){ 
    String[] bg = new String[amount]; 
    bg[i] = makeBaggage(country, flight, amount); 
    baggage.add(bg[i]); 
    System.out.println(bg[i]); 
    ... 

移動String[] bg = new String[amount];聲明的外面循環,而不是在makeBaggage方法中提供amount,而是使用循環計數器作爲f Ollows:bg[i] = makeBaggage(country, flight, i);

String[] bg = new String[amount]; 

for(int i = 0; i < amount; i++){ 
    bg[i] = makeBaggage(country, flight, i); 
    baggage.add(bg[i]); 
    System.out.println(bg[i]) 
    .. 

我認爲應該這樣做。此外,你的代碼可以大大改善,這將是你的任務。