Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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 Android NoSuchElementException和Scanner_Java_Android_Parsing_Java.util.scanner - Fatal编程技术网

Java Android NoSuchElementException和Scanner

Java Android NoSuchElementException和Scanner,java,android,parsing,java.util.scanner,Java,Android,Parsing,Java.util.scanner,我正在尝试从原始文件夹中读取一个txt文件,为我的应用程序创建一个整数数组。 txt每行都有编号,如下所示: test.txt 1 3 4 5 6 2 -9 ... 我的数组是这样的Integer[]vector={1,2,3,4,5,6,2,-9,…} 我正在删除的代码(实际上在单击回调方法中): 但是,在调试模式下,将断点放在直线上时: 22 vector.add(Integer.parseInt(sc.nextLine()) 我可以在每一个迭代中看到向量变量,但当它填充完毕时,我的活动就

我正在尝试从原始文件夹中读取一个txt文件,为我的应用程序创建一个整数数组。 txt每行都有编号,如下所示:

test.txt

1
3
4
5
6
2
-9
...
我的数组是这样的
Integer[]vector={1,2,3,4,5,6,2,-9,…}

我正在删除的代码(实际上在单击回调方法中):

但是,在调试模式下,将断点放在直线上时:

22 vector.add(Integer.parseInt(sc.nextLine())

我可以在每一个迭代中看到向量变量,但当它填充完毕时,我的活动就会停止

我就是不明白出了什么问题,这就是为什么我要寻求帮助


提前谢谢你

while
循环之后,
sc
不再包含行(因此循环退出)

以后你有

 Log.d("clicked" , sc.nextLine());
这会尝试获取另一行(不再存在),导致错误:

E/AndroidRuntime(19925): Caused by: java.util.NoSuchElementException
E/AndroidRuntime(19925):    at java.util.Scanner.nextLine(Scanner.java:1417)
E/AndroidRuntime(19925):    at com.soulmagnet.speakerparametrix2.PlotInfBaffle.plotSPLinfBaffle(PlotInfBaffle.java:136)
(在完整的错误日志中有些隐藏)

所以,删除该行,它应该可以正常工作。

您在日志中看到“单击”了吗

如果可以,在打印日志之前,一切都很好

日志中有趣的部分

14:04:35.619:E/AndroidRuntime(19925):。。。11更多02-21 14:04:35.619: E/AndroidRuntime(19925):由以下原因引起:java.util.NoSuchElementException 02-21 14:04:35.619:E/AndroidRuntime(19925):在 java.util.Scanner.nextLine(Scanner.java:1417)02-21 14:04:35.619: E/AndroidRuntime(19925):在 com.soulmagnet.speakerparametrix2.plotinff挡板.plotSPLinfBaffle(plotinff挡板.java:136) 02-21 14:04:35.619:E/AndroidRuntime(19925):。。。14多

的文档说明,当没有新行时将引发此异常

这是你的问题

Log.d("clicked" , sc.nextLine()); 

仔细查看stacktrace和
Scanner.nextLine()
方法的文档

您正在吃掉此循环中输入文件中的所有行:

while (sc.hasNext()) {
    vector.add(Integer.parseInt(sc.nextLine()));
}
然而,在这一行:

Log.d("clicked" , sc.nextLine());
对已结束的输入调用
nextLine()
。根据
Scanner.nextLine()
的文档:

抛出:

NoTouchElementException-如果未找到行


此调用导致
扫描仪
抛出
NoTouchElementException
。只需删除
Log.d()
行,或者记住循环中的最后一个元素,然后将其值记录到LogCat(如果您有意的话)。

我不是100%确定,但问题在于行
Log.d(“单击”,sc.nextLine())
…即使没有数据,它也会调用
nextLine()
函数。谢谢!Log.d()本应该帮助我监视代码,这是多么讽刺啊。愚蠢和感激我觉得。。。!!我很高兴你解决了这个问题。要拥抱此刻的感觉(为了好玩),请阅读:注意:这个术语不适用于你的情况,但具有类似数量的生活讽刺;)真实的故事!感觉被拥抱了!
while (sc.hasNext()) {
    vector.add(Integer.parseInt(sc.nextLine()));
}
Log.d("clicked" , sc.nextLine());