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-我没有,我只留下了代码的精华。