黑马程序员技术交流社区

标题: Scanner类中一个bug,大神才能解释 [打印本页]

作者: 刘永川    时间: 2016-9-9 01:06
标题: Scanner类中一个bug,大神才能解释
今天做程序的时候,编译没有错误,运行的时候出错了,自己研究了一下,发现了一个问题
Scanner sc = new Scanner(System.in);
double b = sc.nextDouble();
string s = sc.nextLine();
运行时,输入一个double值就会出现异常,但我发现把sc.nextLine   改成  sc.next()就不出异常,基础班,不明白是咋回事,求解!
作者: Fate_stay    时间: 2016-9-9 01:12
nextLine() 方法,是接收回车前第一个字符串,结合你的代码看看吧
作者: Frankle    时间: 2016-9-9 15:31
sc.nextLine()接收了回车键
作者: LShu    时间: 2016-9-9 22:02
string s = sc.nextLine(); 接收了回车键,你可以再创建一个新的键盘录入对象就可以解决了或者把double类型的数据也用 String 类型的接收,再使用 double d = Double.parseDouble(line); 把他转变为double类型的也可以解决
作者: wosika    时间: 2016-9-9 22:04
看了大神们的回答受益匪浅
作者: kangnam    时间: 2016-9-9 22:17
多创建一个键盘录入对象就可以了解决了, 因为NextLine()会接受换行 。  你可以试试反过来也行
作者: lipeng518    时间: 2016-9-9 22:26
估计只能通过新建一个随机对象解决 ,nextline默认接受回车键的
作者: &天马星空ぁ    时间: 2016-9-10 01:58
double b = sc.nextDouble();
//在中间加一个回车回收
sc.nextLine();
string s = sc.nextLine();
作者: Array先生    时间: 2016-9-10 06:07
sc.nextLine()接收了回车键,你把 double b = sc.Double();和String s= sc.nextLine();交换下位置试试
作者: 存少    时间: 2016-9-10 09:40
回车键被接收了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2