2014-10-09 72 views
0

我有一个命令行输入为0 1 2,主代码可以在下面看到。将String [] args值传递给另一个类

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() 

} 
+4

你想创建一个无限递归的程序吗?我不明白这一点。你的'main'方法创建一个新的'AppleStore',它调用构造函数,调用'main',创建一个新的'AppleStore',这......如果你的目标是试图通过使Apple Store崩溃堆栈溢出,我怀疑这将工作。 :) :) – ajb 2014-10-09 23:59:52

回答

5

因为你在你的主要方法做了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),我建议增加一些干将三个变量比可以从子类调用,例如:

int getQueueCapacity() { 
    return this.qCapacity; 
} 

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

+0

非常感谢。我认为我在main中的构造函数是私有的,因此假定需要一个新的构造函数。 – 2014-10-10 00:05:27