C井你在逗我 2014-12-19 14:22 采纳率: 50%
浏览 2543
已采纳

Java Scanner类使用时产生的一个错误,求解

package upper_test;
import java.util.*;
public class Scanner_00 {

int a;
long b;
float c;
String d;
Double e;
public Scanner_00(String x){
Scanner s=new Scanner(x);
a=s.nextInt();
b=s.nextLong();
c=s.nextFloat();
d=s.nextLine();
e=s.nextDouble();
}

public static void main(String[] args) {

    // TODO Auto-generated method stub
    Scanner_00 m=new Scanner_00("1231\n123\n1.23\nccasda\n12333.353\n");

}

}
报错为
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at upper_test.Scanner_00.(Scanner_00.java:17)
at upper_test.Scanner_00.main(Scanner_00.java:24)
求解!反复换过double格式都不行,貌似不是格式问题

  • 写回答

5条回答 默认 最新

  • yangyanggoods 2014-12-20 02:42
    关注

    前面说错了。翻了下文档,Sacnner类的nextLine方法是这样的:
    public String nextLine()
    此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。
    对于
    "1231\n123\n1.23\nccasda\n12333.353\n"
    nextFloat()之后,光标停留在1.23之后,\nccasda之前,因此调用readLine()读到的是一个空字符串
    之后readDouble()的时候读到了"ccasda",于是导致异常

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)