java in.next的头文件_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);

a1009bf407c001b27ee4bbda4dcb6145.png

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循环后就自己结束了,下面那个读取浮点数的代码没执行

b24a98ecd8cf420f4bbf8d189c935cff.png

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

回答

主要原因是空格导致的,用换行符\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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值