Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-Scanner注释跳过_Java_Java.util.scanner - Fatal编程技术网

Java-Scanner注释跳过

Java-Scanner注释跳过,java,java.util.scanner,Java,Java.util.scanner,我在这个实验室的任务是接受多个输入文件,所有文件的格式都相似,只是有些文件有注释,我想跳过注释行。例如: 输入文件: 输入文件1 #注释:接下来的5行用于放置在一个数组中 废话1 废话2 废话3 废话4 废话5 #注释:下2行将放置在不同的数组中 废话1 废话2 #输入文件1的结尾 我尝试做的是使用2个while循环(如果需要,我可以发布代码)。我做了以下几件事 while(s.hasNext()) { while(!(s.nextLine().startWith("#")) {

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

输入文件:

输入文件1
#注释:接下来的5行用于放置在一个数组中
废话1
废话2
废话3
废话4
废话5
#注释:下2行将放置在不同的数组中
废话1
废话2
#输入文件1的结尾

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

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

我觉得这应该行得通,但是不行。我在做什么。请帮忙。提前谢谢。

您失去了好的线路,应该:

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

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

您的代码有两个问题:

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

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

    @ThomasMueller-我没有,我只留下了代码的精华。