为什么LinkedList被打印为空白?

时间:2017-02-19 11:39:38

标签: java printing linked-list

有人可以告诉我为什么baggage无法打印?

对于乘客姓名,我输入约翰。

对于国家/地区代码,我输入:BI

对于航班号,我输入:095

对于行李数量,我可以输入任何金额。

假设我输入:John,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;
    }
}
}

1 个答案:

答案 0 :(得分: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];声明移到 for循环之外,而不是在amount方法中提供makeBaggage,而是使用循环计数器,如下所示: 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])
  ..

我认为应该这样做。此外,您的代码可以大大改进,这将是您的任务。