巨魔hahahahaha lkldalsdl asklskdkaslaslk
scan.next()函数获取下一个输入字符串。这就是为什么进程名称为空行的原因,因为名称已由while条件中的下一个函数采用。使用hasNext()检查是否存在下一行,或者获取输入并将其放入字符串变量并将其与单词“ finish”进行比较。
您可以在文档中查看说明:https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#next()
从文档中引用:“下一个:从此扫描器中查找并返回下一个完整令牌”
问题是由于使用next()
而不是nextLine()
。选中Scanner is skipping nextLine() after using next() or nextFoo()?了解更多信息。
替换
while (!scan.next().equalsIgnoreCase("finish"))
with
while (!scan.nextLine().equalsIgnoreCase("finish"))
此外,最好使用do...while
来保证至少执行一次它的主体,即>]
do {
Process p = new Process();
String pn = "";
String bt = "";
String at = "";
pn = input.nextLine();
bt = input.nextLine();
at = input.nextLine();
System.out.println("Process name, CPU Burst Time, Arrival time\n ");
p.process_name = pn;
p.burstTime = Float.parseFloat(bt);
p.arrivalTime = Float.parseFloat(at);
fcfs.add(p);
} while (!scan.nextLine().equalsIgnoreCase("finish"));