发布网友 发布时间:2022-04-25 15:25
共2个回答
热心网友 时间:2023-10-12 15:39
因为运行到double data_2 = input.nextDouble()这句话时,你要输入一个实数,然后按回车。追答都执行了。
System.out.println("输入一行字符:");这句话是已经执行了。
String str2 = input.nextLine(); 你可以查一下这个方法的api。
nextXXX方法和nextLine方法的表象区别是前者读取的是“一段”字符,而后者读取的是一行字符串。
出现以上现象的原因简单的说主要是由nextXXX()方法的不负责造成的。
nextXXX()方法的工作原理:
从一行中扫描,直到碰到特定的标识符:空格或是换行符(\n),便获取之前的东西。
nextDouble()读取了之前的数据,但并没有读入"\n",也不负责换行,然后就把 "\n"丢给了nextLine()处理,
nextLine()看见“\n”就收了,然后扫描了 \n 之前的内容,也就是空字符串。于是出现问题了。
热心网友 时间:2023-10-12 15:40
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。而nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。