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>
答案 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;
}