2017-02-19 11 views
0

誰かが私のbaggageが印刷されない理由を教えてもらえますか?LinkedListが空白として印刷されるのはなぜですか?

旅客名の場合、私は、例えば、Johnと入力します。私は任意の金額を入力することができ、荷物の数については095

:私は入力したフライト番号については

BI:私は入力した国コードについては

のは、私が入力したとしましょう:ジョン、BI、095、3

は、これは私が得るものです:[John with baggage(s) [, , ]]コードは非常に厄介であるならば、私は [John with baggage(s) [BI0950, BI0951, BI0952]]

は申し訳ありませんが取得する必要があるとき。

これが修正されました。みんなありがとう。あなたのループは無用である。この場合には、それはどちらかのループ内に設定されていないx変数を返しループの後に見ることができるよう

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方法には何も返していません。

私は、これはあなたが探しているものだと思います
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]) 
    .. 

私はそれをするべきだと思います。また、コードを大幅に改善することができ、それがあなたの仕事です。

関連する問題