2017-02-22 11 views
1

それぞれの乗客ごとにリンクリストに新しいノードセットを入力します。 例:個々のリンクリストのリンクリストにノードの新しいセットを入力するには

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

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

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

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

は、これは私が得るものです:[John with baggage(s) [BI0950, BI0951, BI0952]]私が欲しいものです。

次に、新しい乗客に入るために「b」を押します。

それから私は、次の乗客のために入力します:ジェーン、BU、096、3

は、これは私が得るものです:私はから古いノード(BI0950、BI0951、BI0952)を削除するにはどうすればよい[John with baggage(s) [BI0950, BI0951, BI0952], Jane with baggage(s) [BI0950, BI0951, BI0952, BU0960, BU0961, BU0962]]

baggage私が 'b'を押すたびにリンク先リスト( 'b'は新しい乗客を追加する)ですか?

import java.util.*; 

public class baggage_system{ 

    static LinkedList<String> baggagex = new LinkedList<String>(); 

    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 nextbg(ListIterator<String> iteratorbg){ 
    return iteratorbg.next();  
    } 

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

    baggagex.add(country + flight + num); 

    return baggagex; 

    } 

    public static int count(){ 
    System.out.println(baggagex.size()); 
    return baggagex.size(); 

    } 

    public static void main(String args[]) { 

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

     LinkedList<String> counting = 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)); 


     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++){ 
    //  LinkedList<String> bgg = new LinkedList<String>(); 

     baggage = makeBaggage(country, flight, i); 

     System.out.println(baggage); 

     } 
     LinkedList<String> bgg = new LinkedList<String>(baggage); 



     passenger.getLast().setBaggages(bgg); 


     System.out.println(passenger); 

/*  if(baggage.size() != 0 && baggage.size() > baggage.size() - 1){ 
     for(int j = 0; j < bgg.size(); j++){ 
      baggage.remove(j); 
     } 
     */ 
//  System.out.println(bgg); 



/*  while (!baggage.isEmpty()) { 
     baggage.removeFirst(); 
    } 
     */ 

    } else if(command.equals("n")){ 
     count(); 
    } else if (command.equals("p")){ 
     System.out.println(baggage.peekFirst()); 
    } 

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

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

    public void pBags(){ 

    } 

    @Override 
    public String toString() {  

     return passengers + " with baggage(s) " + baggage; 

    } 
    } 
} 

答えて

1

問題は、あなたがすべての乗客のために同じリンクリストの荷物のオブジェクトを使用し、あなたのコーディングロジックです。

static LinkedList<String> baggagex = new LinkedList<String>(); 

このLinkedListからオブジェクトを追加または削除すると、すべての乗客に影響が出ます。

解決方法: 乗客ごとに新しいリンクリストオブジェクトを使用します。以下のコードのように:

public static LinkedList<String> makeBaggage(String country, String flight, int num) 
{ 
    LinkedList baggagex = new LinkedList(); 
    baggagex.add(country + flight + num); 

    return baggagex; 
} 
+0

こんにちは、どういうわけか、最新のノードしか印刷しません。これは私が手に入れたものです。[手荷物の付いたジョン[BI0952]] –

+0

メソッドが呼び出されるたびに「baggagex」が空になるので、既存のノードが置き換えられます。 –

関連する問題