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

Scanner中next()与nextLine()的区别

在给出的第一章作业参考的代码中,将String name = console.next();换成String name = console.nextLine();
导致代码运行在选择名称输出1之后,会直接抛出异常,是因为什么?
private static String getBookByName(String[] books)
			throws Exception {
		System.out.println("输入图书名称:");
		//获取输入的图书名称
		String name = console.next();
		for (int i = 0; i < books.length; i++) {
			if (name.equals(books[i]))
				//输入的名称与某一图书名称匹配,返回该图书
				return books[i];
		}
		//若无匹配,抛出”图书不存在异常“
		throw new Exception("图书不存在!");
	}


正在回答

1 回答

next()以读取到有效字符(非空格,tab,enter)开始,中途遇到无效字符结束输入,得不到带无效字符的字符串,nextline()可以得到非enter的字符串


0 回复 有任何疑惑可以回复我~
#1

沫语 提问者

但是为什么我将上面那个程序的第七行改成nextLine()后,运行结果会直接抛出异常,但是只用next()会在“输入图书名称:”后面停下等待输入 输入命令:1-输入图书名称查找 2-输入图书序号查找 1 输入图书名称: 图书不存在 输入命令:1-输入图书名称查找 2-输入图书序号查找
2016-05-07 回复 有任何疑惑可以回复我~
#2

沫语 提问者

非常感谢!
2016-05-12 回复 有任何疑惑可以回复我~
#3

慕粉3170877

我还是不明白是什么意思?
2016-05-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Scanner中next()与nextLine()的区别

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信