java - Android NoSuchElementException 和扫描仪

标签 java android parsing java.util.scanner

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

测试.txt

1
3
4
5
6
2
-9
...

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

我正在部署的代码(实际上位于点击回调方法内):

public void plotSPLinfBaffle(View v) {
    List<Integer> vector = new ArrayList<Integer>();

    InputStream in = getResources().openRawResource(R.raw.test);
    Scanner sc = new Scanner(new InputStreamReader(in));

    while(sc.hasNext()){

        vector.add(Integer.parseInt(sc.nextLine()));
    }

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

    Integer[] splVector = vector.toArray(new Integer[0]);
}

你看,我不断收到此运行时错误和 logcat 消息:

02-21 14:04:35.599: D/AndroidRuntime(19925): Shutting down VM
02-21 14:04:35.599: W/dalvikvm(19925): threadid=1: thread exiting with uncaught exception (group=0x40018578)
02-21 14:04:35.619: E/AndroidRuntime(19925): FATAL EXCEPTION: main
02-21 14:04:35.619: E/AndroidRuntime(19925): java.lang.IllegalStateException: Could not execute method of the activity
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.view.View$1.onClick(View.java:2144)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.view.View.performClick(View.java:2485)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.view.View$PerformClick.run(View.java:9080)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.os.Handler.handleCallback(Handler.java:587)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.os.Looper.loop(Looper.java:130)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.app.ActivityThread.main(ActivityThread.java:3687)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at java.lang.reflect.Method.invokeNative(Native Method)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at java.lang.reflect.Method.invoke(Method.java:507)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at dalvik.system.NativeStart.main(Native Method)
02-21 14:04:35.619: E/AndroidRuntime(19925): Caused by: java.lang.reflect.InvocationTargetException
02-21 14:04:35.619: E/AndroidRuntime(19925):    at java.lang.reflect.Method.invokeNative(Native Method)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at java.lang.reflect.Method.invoke(Method.java:507)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at android.view.View$1.onClick(View.java:2139)
02-21 14:04:35.619: E/AndroidRuntime(19925):    ... 11 more
02-21 14:04:35.619: E/AndroidRuntime(19925): Caused by: java.util.NoSuchElementException
02-21 14:04:35.619: E/AndroidRuntime(19925):    at java.util.Scanner.nextLine(Scanner.java:1417)
02-21 14:04:35.619: E/AndroidRuntime(19925):    at com.soulmagnet.speakerparametrix2.PlotInfBaffle.plotSPLinfBaffle(PlotInfBaffle.java:136)
02-21 14:04:35.619: E/AndroidRuntime(19925):    ... 14 more

仍然,在 Debug模式下将断点放置在行中:

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

我可以在每次迭代中看到 vector 变量,但是当它填充完某些东西后就会终止我的 Activity ......

我只是不明白出了什么问题,这就是我寻求帮助的原因!

提前谢谢您!

最佳答案

仔细查看堆栈跟踪以及 Scanner.nextLine() 方法的文档。

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

while (sc.hasNext()) {
    vector.add(Integer.parseInt(sc.nextLine()));
}

但是,在这一行中:

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

您对已结束的输入调用nextLine()。根据 Scanner.nextLine() 的文档:

Throws:

NoSuchElementException - if no line was found

此调用会导致 Scanner 抛出 NoSuchElementException。只需删除 Log.d() 行 - 或记住循环中的最后一个元素,然后将其值记录到 LogCat(如果这是您的 Intent )。

关于java - Android NoSuchElementException 和扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001958/

相关文章:

android - CardsLib ListView 未填充

java - Elasticsearch:在传输层捕获异常

java - 使用 build.xml 为项目中的特定包构建单独的 jar?

java - Glide 不适用于我

android - 是否可以知道哪个应用程序绑定(bind)到我的服务?

android - 当用户单击列表中的按钮时如何在展开列表中展开列表

java - 比在 java 和 xml 中重复代码大约 40 次更好的方法?

java - 列表 Activity 不起作用

java - 使用 JSoup 解析特定元素

jquery - 如何使用restful api将Google自定义搜索结果通过Json解析为Google显示的Google结果?