【发布时间】:2020-04-22 11:27:47
【问题描述】:
如何修改此代码,使其仅在首先遍历整个列表后才打印出无效消息。我目前的问题是每次没有匹配时它都会打印出这些消息。这不是我打算做的。
public void assignSchedule(Depot depotName) throws Exception {
String client, driver;
Boolean exit = false;
do {
System.out.printf("%-10s %-10s %10s %n", "Client", "Start Date", "End Date");
depotName.listWorkSchedulue();
System.out.print("Enter the client name for the schedule you wish to assign: ");
client = DepotSystem.input.nextLine();
for (WorkSchedule ws : depotName.getWorkSchedules())
{
if (client.equals(ws.getClient()))
{
System.out.printf("%n%20s%n", "Drivers");
depotName.listDrivers();
System.out.print("Which Driver do you want to assign this to: ");
driver = DepotSystem.input.nextLine();
for (Driver drivers : depotName.getDrivers())
{
if (driver.equals(drivers.userName) && !drivers.assigned)
{
System.out.printf("%nThe work schedule for client %s is now assigned to %s%n ", client,
driver);
depotName.getDriver(driver).setSchedule(depotName.getWorkSchedule(client));
drivers.setAssigned(true);
exit = true;
} else if ((!driver.equals(drivers.userName) && drivers.assigned)) {
System.out.printf("%nEither not a valid driver or Driver is already assigned a Job.%n");
}
}
} else if (!client.equals(ws.getClient())) {
System.out.printf("%nPlease enter a valid client.%n");
}
}
} while (!exit);
}
如果我输入了一个不正确的名字,这个的当前输出如下
Client Start Date End Date
Gary 2020-04-25 2020-04-27
Bob 2020-05-05 2020-05-06
Enter the client name for the schedule you wish to assign: f
Please enter a valid client.
Please enter a valid client.
当我输入错误的名称时,我希望它是这样工作的。
Client Start Date End Date
Gary 2020-04-25 2020-04-27
Bob 2020-05-05 2020-05-06
Enter the client name for the schedule you wish to assign: f
Please enter a valid client.
【问题讨论】:
-
David - 如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。接受的答案有助于未来的访问者自信地使用该解决方案。查看meta.stackexchange.com/questions/5234/… 了解如何操作。