我有一个任务,我正在尝试针对“机器”(所有不同类型)的数组列表检查“作业”的数组列表,如果作业的前三个字母与机器的前三个字母匹配(例如,PRT作业代码只能分配给具有代码PRT的机器)。我希望它接受这份工作,但如果不是,我希望打印出一条消息说没有可用的机器。我只学习了几个星期的Java,所以这可能不是最好的方法:
public void assignJob() {
for(Job j : jobs) {
String jobCode = j.getCode().substring(0, 3);
for(Machine m : machines) {
String machineCode = m.getCode().substring(0,3);
if (jobCode.equals(machineCode)){
m.acceptJob(j);
System.out.println("The job " + j.getCode() + " has been
assigned to a machine.");
break;
}
else {
System.out.println("Sorry there is no machine available to accept the type of job: " + j.getCode() );
}
}
}
}
我得到的问题是它每次循环时打印出来的消息所以它会说第四次找到正确的机器之前没有机器可用3次然后说工作已经公认。我只是想要一次这个消息,只有在它搜索过后才找到任何东西。
任何帮助都将不胜感激。
答案 0 :(得分:0)
使用boolean found = false;在外部for循环之上,将if语句的一部分移动到外部for循环下面并使其成为if语句。如果您找到了匹配项,请设置found = true;并打破循环。然后检查是否找到它,如果找不到则显示消息......