Java - 扫描程序注释跳过

时间:2012-05-12 09:49:53

标签: java java.util.scanner

我在本实验中的任务是接受多个输入文件,并且所有这些文件的格式都相似,只是有些文件有注释,我想跳过注释行。例如:

输入文件:

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(s.hasNext()) {
    while(!(s.nextLine().startWith("#")) {
        //for loop used to put in array
        array[i] = s.nextLine();
    }
}

我觉得这应该有效,但事实并非如此。我做错了什么请帮忙。提前谢谢。

3 个答案:

答案 0 :(得分:7)

你正在失去良好的界限,应该是:

String line;
while(!(line = s.nextLine()).startWith("#")) {
    array[i] = line;
}

答案 1 :(得分:2)

您的代码存在两个问题:

  1. 您在循环中多次调用nextLine
  2. 如果没有下一行,您的第二个while循环将失败。
  3. 尝试按如下方式修改代码:

    int i = 0;
    while(s.hasNextLine()) {
        String line = s.nextLine();
        if(!line.startWith("#")) {
              array[i++] = line;
        }    
    }
    

答案 2 :(得分:0)

你的代码的问题是它只会读取数组中的替换行,因为在读取一行之前,nextLine()方法将被调用两次(在while测试表达式中一次,而在while体中第二次)而不是一次...... binyamin建议什么对你有用。