2

我在这个实验中的任务是接受多个输入文件,除了一些文件有注释并且我想跳过注释行之外,它们的格式都相似。例如:

输入文件:

Input file 1

#comment: next 5 lines are are for to be placed in an array
blah 1
blah 2
blah 3 
blah 4
blah 5

#comment: next 2 line are to be placed in a different array
blah 1 
blah 2

#end of input file 1

我尝试做的是我使用了 2 个 while 循环(如果需要,我可以发布我的代码)。我做了以下

while(s.hasNext()) {
    while(!(s.nextLine().startWith("#")) {
        //for loop used to put in array
        array[i] = s.nextLine();
    }
}

我觉得这应该有效,但事实并非如此。我在做什么不正确。请帮忙。先感谢您。

4

3 回答 3

7

你正在失去好的台词,应该是:

String line;
while(!(line = s.nextLine()).startWith("#")) {
    array[i] = line;
}
于 2012-05-12T09:52:39.783 回答
3

您的代码有两个问题:

  1. nextLine在循环中多次调用。
  2. while如果没有下一行,您的第二个循环将失败。

尝试修改代码如下:

int i = 0;
while(s.hasNextLine()) {
    String line = s.nextLine();
    if(!line.startWith("#")) {
          array[i++] = line;
    }    
}
于 2012-05-12T10:06:37.967 回答
0

您的代码的问题是它将仅读取数组中的备用行,因为 nextLine() 方法将在读取一行之前被调用两次(一次在 while 测试表达式中,第二次在 while 正文中),而不是曾经... binyamin 的建议对您有用。

于 2012-05-12T10:01:50.970 回答