为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃尔雅 2019-04-27 19:19:38
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.InputMismatchExceptionat 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 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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

nextInt不强制要求换行,只要中间有空白字符(空格、换行啥的都行)分隔。读完以后光标就在你读到的那个数字的末尾

查看完整回答
反对 回复 2019-05-07
?
动漫人物

TA贡献1815条经验 获得超10个赞

?建议你用eclipse


查看完整回答
反对 回复 2019-05-07
?
万千封印

TA贡献1891条经验 获得超3个赞

应该就是\r\n的问题


查看完整回答
反对 回复 2019-05-07
  • 5 回答
  • 0 关注
  • 1081 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号