扫描仪在循环结束后读取

时间:2015-09-17 08:35:00

标签: java input java.util.scanner

Scanner.hasNext读取是否有令牌,如果没有令牌它应该结束循环,但得到错误没有这样的元素发现异常但是当我切换第1行和第2行我运行良好。

layout_width

错误

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn_pre"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.50"
        android:text="@string/pre" />
    <Button
        android:id="@+id/btn_next"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.50"
        android:text="@string/next" />
</LinearLayout>

2 个答案:

答案 0 :(得分:1)

使用if if like this

if (scanner.hasNextLong()) {
       System.out.println("Found :" + scanner.nextLong());
}else{

      System.out.println("Not Found :" + scanner.next());
}
问题是,如果有一个nextLong,你接下来要打2次。但最后没有更多的元素。

你的代码中的

字符串是Hello World! 3 + 3.0 = 6.0 true 13964599874 现在想你打电话给nextLong并找到了13964599874但是当你再次拨打next()时会收到错误NoSuchElementException为什么?因为在13964599874

之后没有任何内容

答案 1 :(得分:1)

那是因为你没有停止循环。在读取Long之后,它将继续: System.out.println("Not Found :" + scanner.next());

continue

之后添加System.out.println("Found :" + scanner.nextLong());进行修复
        if (scanner.hasNextLong()) {
            System.out.println("Found :" + scanner.nextLong());
            continue;
        }