我正在编写一个代码来查找文件中的句子数。 我的代码如下:
try{
int count =0;
FileInputStream f1i = new FileInputStream(s);
Scanner sc = new Scanner(f1i);
while(sc.hasNextLine()){
String g = sc.nextLine();
if(g.indexOf(".")!= -1)
count++;
sc.nextLine();
}
System.out.println("The number of sentences are :"+count);
}
catch(Exception e) {
System.out.println(e);
}
我想我的逻辑检查周期数是正确的。我写了上面的代码,我认为是正确的,但它显示javautilNoElementfound : No line found
异常。我尝试了一些其他逻辑,但这个是最好理解的。但我被困在这里。我在那个例外上使用谷歌,它说当我们迭代没有元素的东西时会抛出它。但是我的文件包含数据。这个例外是否有某种方式可以让路?还是有其他错误?提示非常感谢!谢谢
答案 0 :(得分:2)
您在sc.nextLine()
循环内调用while
两次,这就是错误发生的原因。
此外,当同一行上有2个句子时,您的逻辑并不能解释这种情况。
你可以尝试这样的事情:
int sentencesPerLine = g.split(".").length;
循环应该是:
while(sc.hasNextLine()){
String g = sc.nextLine();
if(g.indexOf('.')!= -1){//check if the line contains a '.' character
count += g.split("\\.").length; // split the line into an array of Strings using '.' as a delimiter
}
}
在split(...)方法中,我使用"\\."
代替"."
,因为.
是一个正则表达式元素,需要进行转义。