将String [] args值传递给另一个类

时间:2014-10-09 23:54:39

标签: java string variables queue args

命令行输入为0 1 2,主代码如下所示。

public class AppleStoreRunner {
   public static void main(String [] args) {

        //maximum size of queue
        int qCapacity = Integer.parseInt(args[0]);

        //number of simulation hours
        int simHours = Integer.parseInt(args[1]);

        //average number of customers per hour
        int custPerHour = Integer.parseInt(args[2]);

        AppleStore myStore = new AppleStore(qCapacity, simHours, custPerHour);

        //Run simulation
        myStore.simulation();
        myStore.displayAcceptedCustomers();
        myStore.displayServedCustomers();
        myStore.displayWaitingCustomers();
        myStore.displayTurnAwayCustomers();

    }
}

如何调用以下类中的输入命令行参数,以便我可以在单独的扩展类中使用输入?下面的代码是我试图为3个输入数字创建变量的类。

public class AppleStore {

 int qCapacity;
 int simHours;
 int custPerHour;

/** Constructor 
* @param qCapacity The initial capacity of the queue to be used. 
* @param simHours The number of hours that the simulation should run. 
* @param custPerHour expected number of customers to arrive per hour. 
 */ 
     public AppleStore(int qCapacity, int simHours, int custPerHour) 

     {
         qCapacity = AppleStoreRunner.main(args);
     }
 /** 
     * This methods performs a simulation of a store operation using a queue and prints the statistics. 
     * For every minute, the simulator 1) checks if there are new customers arriving; 2) adds the new customer into the waiting line or else records the customer who chooses to leave; 3) continues to help the current customer if the current customer is not finished yet, or else get the next person in the waiting line. The simulator starts at minute 0, and repeats every minute until it finishes the requested simulation time.  
     */ 
     public void simulation( ) 
     {
     System.out.println( "Average Waiting Time" + );
     System.out.println( "Average Line Length" + );

     /** 
     *  print the info of all accepted customers 
     */ 
     }
      public void displayAcceptedCustomers() 
      {
          System.out.println("Customers accepted" + );

     /** 
     * print the info of all served customers 
     */ 
      }
      public void displayServedCustomers() 

      /** 
      * print the info of all waiting customers 
      */ 
      public void displayWaitingCustomers() 

     /** 
     * print the info of all turned away customers 
     */ 
     public void displayTurnAwayCustomers() 

}

1 个答案:

答案 0 :(得分:5)

因为你在main方法中做了AppleStore myStore = new AppleStore(qCapacity, simHours, custPerHour);,所以你需要做的就是定义一个合适的构造函数。

public AppleStore(int qCapacity, int simHours, int custPerHour) 

{
    this.qCapacity = qCapacity;
    this.simHours = simHours;
    this.custPerHour = custPerHour;
}

当您将三个实例变量声明为package-private时,子类将自动看到三个变量的存在。

但是,如果你让子类以某种方式不受超类更改的影响(我的意思是AppleStore),我建议为三个变量添加一些可以从子类调用的getter,例如:

int getQueueCapacity() {
    return this.qCapacity;
}

并将三个变量的访问级别更改为私有。