2017-02-19 10 views
0

Может кто-нибудь сказать мне, почему мой baggage не распечатает?Почему ссылка LinkedList печатается как пустая?

Для имени пассажира введите, скажем, John.

Для кода страны вхожу: 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 Я все еще работаю над следующим() методом. Извините, но что вы имеете в виду, просто прочитав это? –

ответ

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]; объявление вне для loop и вместо того, чтобы поставлять amount в методе makeBaggage, вместо этого используйте счетчик циклов, так как f : 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]) 
    .. 

Я думаю, что должен это сделать. Кроме того, ваш код может быть значительно улучшен, и это будет вашими задачами.