【发布时间】:2021-08-10 11:51:48
【问题描述】:
我正在尝试使用以下方法为餐厅创建队列模拟:
队列模拟
public static void queueSim(String filename) {
System.out.println("=== queueSim ===");
// Initialization
ArrayList<String> dataAL = new ArrayList<>();
ArrayList<Server> serverList = new ArrayList<Server>();
String inputLine;
// Read data from file into array list
readDatafile(filename, dataAL);
System.out.println(filename + " is used for this simulation.");
System.out.println("Start simulation using filename -> " + filename);
inputLine = dataAL.get(0); // first line of input data
generatePrimarySecondaryServers(inputLine, serverList); //creates primary & secondary servers
inputLine = dataAL.get(dataAL.size() - 1);
int totalMinute = getTotalMinute(inputLine);
System.out.println("\nTotal minute of simulation: " + totalMinute);
int totalCustomers = dataAL.size() - 1;
System.out.println("The total number of customers in this simulation is " + totalCustomers + ".");
Queue pQueue = new Queue(dataAL.size() - 1); // creates primary queue
Queue sQueue = new Queue(dataAL.size() - 1); // creates secondary queue
int minute = 1;
while (minute != totalMinute) {
for (int loopCounter = 1; loopCounter < dataAL.size() - 1; loopCounter++) {
inputLine = dataAL.get(loopCounter);
int minuteArrive = getMinuteArrive(inputLine);
int minuteForPServer = getMinuteForPrimaryServer(inputLine);
int minuteForSServer = getMinuteForSecondaryServer(inputLine);
Customer Customer = new Customer(minuteArrive, minuteForPServer, minuteForSServer);
}
processCustomer(Customer, pQueue, minuteArrive, minute);
processPServer(pQueue, serverList, minuteForPServer, minuteArrive, Customer);
processPWork(serverList, sQueue, Customer);
minute++;
}
}
我在尝试让 while 循环正常工作时遇到问题。
while (minute != totalMinute) {
for (int loopCounter = 1; loopCounter < dataAL.size() - 1; loopCounter++) {
inputLine = dataAL.get(loopCounter);
int minuteArrive = getMinuteArrive(inputLine);
int minuteForPServer = getMinuteForPrimaryServer(inputLine);
int minuteForSServer = getMinuteForSecondaryServer(inputLine);
Customer Customer = new Customer(minuteArrive, minuteForPServer, minuteForSServer);
}
processCustomer(Customer, pQueue, minuteArrive, minute);
processPServer(pQueue, serverList, minuteForPServer, minuteArrive, Customer);
processPWork(serverList, sQueue, Customer);
minute++;
}
processCustomer、processPServer、processPWork 3 个方法告诉我参数中的某些变量无法解析。但是,如果我只是将这些方法放入嵌套的 for 循环中,我会在尝试编译时在 cmd 中得到以下输出,并且在不退出的情况下无法进行任何进一步的输入:
另外,考虑到我的模拟要求,我认为将这些方法放在 for 循环中没有多大意义。
如果我遗漏了任何重要的代码,我提前道歉,因为我对编程还很陌生。请让我知道,以便我可以编辑我的问题!任何帮助表示赞赏!
【问题讨论】:
-
你可能想在 for 循环中移动你的 3 个方法
标签: java for-loop methods while-loop queue