我有一个文本文件,最多可以存储3行(每行有时间##:##)。
如果整个文本文件为空:请执行 任务1
否则如果第一行有时间:do 任务2
否则,如果第一行和第二行是 充满时代:做任务3
否则如果所有三行都有时间:do 任务4
否则如果所有三行都有时间但是 第一行时间和第三行 时间有2个多小时的差距:做 任务5
我已经弄明白了前两个。
if ((inputFile.readLine()) == null) {Keypad5 task1 = new Keypad5(); }
else if ((inputFile.readLine()) !=null) {Keypad6 task2 = new Keypad6();}
我怎么读和第二和第三行?如果第二行有时间12:54,第三行有3:55,这是超过2小时的差距。我可以减去时间。
答案 0 :(得分:3)
我建议你在决定做什么之前阅读所有三行。这将减少“复制和粘贴”第二和第三行的阅读。
这样的事情可能就是你所追求的:
List<String> lines = new ArrayList<String>();
Scanner s = new Scanner(new File("filename.txt"));
while (s.hasNextLine())
lines.add(s.nextLine());
switch (lines.size()) {
case 0: doTask1(); break;
case 1: doTask2(); break;
case 2: doTask3(); break;
case 3:
if (gapBetween(lines.get(0), lines.get(2)) < 2)
doTask4();
else
doTask5();
}
答案 1 :(得分:0)
对BufferedReader的后续readLine()调用始终读取文件的下一行。如果你想比较不同的行,你必须将它们存储在变量中并在之后进行比较。
答案 2 :(得分:0)
我会先将所有文本行读入Collection中,如果您确定这只是3行,它不会导致内存问题而且您不需要这样做很多错误处理。
ArrayList<String> lines = new ArrayList<String>();
String line = null;
while ((line = inputFile.readLine()) != null){
lines.add(line);
}
然后你可以很容易地做一些if语句,而不会覆盖缓冲区中的前一行。 (我假设“inputFile”是一个BufferedReader)