2017-02-19 1 views
0

누군가 내 baggage이 인쇄되지 않는 이유를 말해 줄 수 있습니까?LinkedList가 공백으로 인쇄되는 이유는 무엇입니까?

승객 이름으로는 존을 입력합니다. 내가 어떤 금액을 입력 할 수있는 수하물의 개수를 들어 095

: I 입력 항공편 번호에 대한

BI : I 입력 국가 코드

.

의 내가 입력한다고 가정 해 봅시다 : 존, BI, 095, 3

이 내가 무엇을 얻을 : 코드가 매우 지저분한 경우 내가 [John with baggage(s) [BI0950, BI0951, BI0952]]

죄송 점점되어야 할 때 [John with baggage(s) [, , ]]을.

변경되었습니다. 고마워. 당신이 당신의 루프가 쓸모가이 경우, 어느 루프 내부에 설정되지 않은 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 방법에 아무것도 반환하지 것입니다.

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]; 선언을 이동

: 코드에서이 특정 라인에 대한

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

:

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

나는 이것이 당신이 찾고있는 하나라고 생각 루프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]) 
    .. 

나는 그렇게해야한다고 생각합니다. 또한 코드가 크게 향상 될 수 있으며 이는 작업에 도움이됩니다.

관련 문제