H5W3
当前位置:H5W3 > 其他技术问题 > 正文

java in.next()报错

  • 学习java输入输出的时候碰到两个问题
  • 在使用了in.next()的时候,我输入了aa bb cc(三者有空格),然后打印输出,接下来直接使用in.nextInt();然后在next()那里输出了aa后就报错了。
//读取输入一个单词,以空白符作为分隔,用next
System.out.println("请输入一行字符串,可带空格,以enter结束: ");
String b = in.next();
System.out.println("用next获取您的输入是: " + b);
//键盘输入aa bb cc,打印输出aa,然后报错
//读取浮点数
System.out.println("请输入浮点数数字: ");
double d = in.nextDouble();
System.out.println("用nextDouble获取您的输入是: " + d);

图片说明

  1. 2然后我觉得可能是缓存区还有东西所以报错了,所以弄了个循环想把缓存区的东西读取出来,代码如下
//读取输入一个单词,以空白符作为分隔,用next
System.out.println("请输入一行字符串,可带空格,以enter结束: ");
do{
String b = in.next();
System.out.println("用next获取您的输入是: " + b);
}while(in.hasNext());
//读取浮点数
System.out.println("请输入浮点数数字: ");
double d = in.nextDouble();
System.out.println("用nextDouble获取您的输入是: " + d);

然后不报错了,但程序在执行完dowhlie循环后就自己结束了,下面那个读取浮点数的代码没执行图片说明

有大佬能告诉是怎么回事吗?

回答

主要原因是空格导致的,用换行符\n当做分隔符

        Scanner in = new Scanner(System.in);
        in.useDelimiter("\n");

        System.out.println("请输入一行字符串,可带空格,以enter结束: ");
        String b = in.next();
        System.out.println("用next获取您的输入是: " + b);

        in.reset();        

        System.out.println("请输入浮点数数字: ");
        double d = in.nextDouble();
        System.out.println("用nextDouble获取您的输入是: " + d);    

do while循环是等待你继续输入,所以后面没有执行

另一种写法

          Scanner in = new Scanner(System.in); 
          System.out.println("请输入一行字符串,可带空格,以enter结束: ");
          String b = in.nextLine();
          System.out.println("用next获取您的输入是: " + b);          


          //读取浮点数
          System.out.println("请输入浮点数数字: ");          

          double d = Double.parseDouble(in.nextLine());
          System.out.println("用nextDouble获取您的输入是: " + d);

本文地址:H5W3 » java in.next()报错

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址