A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
为什么?怎么解决。

43 个回复

倒序浏览
nextInt()接收到回城的时候自动认为结束了..
回复 使用道具 举报
当通过nextInt()录入一个整数的时候,其实录入的是整数和\r\n,因为在录完整数后会敲击回车键,\r\n就代表的回车键,而nextLine遇到\r\n就会录入结束,所以会出现问题

点评

讲解很透彻  发表于 2016-5-26 16:28
回复 使用道具 举报
nextInt()录入整数时会再其后跟上\r \n,而nextLine()恰好是一这两个字符作为结束标志的,所以你会发现什么都没录进去,解决办法,你可以把整数当做字符串来存,当你要使用的时候的,再将字符串转换成整数就可以了,有这个函数。
回复 使用道具 举报
两种方法的:1.再添加一个键盘输入,2.你可以把整数当做字符串来存,当你要使用的时候的,再将字符串转换成整数就可以了
回复 使用道具 举报
把nextLine()改成next()就可以了,或者重新new一个对象
回复 使用道具 举报
Ak-47 中级黑马 2016-3-29 01:30:38
7#
nextIne()是键盘录入整数的方法,当我们录入一个整数的 的时候,其实在键盘在录入的是这个数字和\r\n,
               
,nextLine()是键盘录入字符串的方法,可以接受任意类型的数据,但是他凭什么能获取
                一行呢?通过\r\n,只要碰到\r\n就结束了
所以当你前面输入整数,下面紧跟着输入字符时,当你输入一个整数后,系统默认后面加上了\r\n,这个\r\n,被nextLine()接收就代表结束了,所以控制台就显示你输入的整数,下面就是空格了,撒都没有
回复 使用道具 举报
你是想用nextInt输入数字,然后用nextLine得到一段字符串吗?
你可以这样:
package practics;
import java.util.Scanner;
public class aa {
        public static void main(String []args){
        Scanner sc=new Scanner(System.in);
        String b=sc.nextLine();
   int s=sc.nextInt();
   System.out.println(s+"  "+b);
}}
这样就好你试试 因为在nextInt之后有个换行,被nextLine();所接受所以就没有输出值。
回复 使用道具 举报
统一都用nextline()好了,字符串  数字值通吃
回复 使用道具 举报
你好!
nextInt()是键盘录入整数的方法,当我们录入10的时候,其实是在键盘上录入的是10和\r\n(敲的回车键),nextInt()方法只获取10就结束了. nextLine()是键盘录入字符串的方法,可以接收任意类型,只要遇到\r\n就证明一行结束了.
解决方案1, 创建两次对象(但是浪费空间)

解决方案2
键盘录入的都是字符串,都用nextLine方法.然后在转换.

回复 使用道具 举报
原因:nextInt() 录入整数,输完后会有一个回车换行,整数被前面的用了,剩个回车换行,nextLine()直接接收到回车换行就会认为已经输完,得到的是一个空字符串;
解决方法:1 用next代替nextline,因为next会无视真正字符串前面的tab 空格  和回车,  比如“空格+回车+123”空格和回车不会起到效果。
2:重新NEW一个输入
回复 使用道具 举报
本帖最后由 123liu123 于 2016-3-29 22:25 编辑

nextInt()录入的后边有一个\r\n,而int只接收了数字,留下了\r\n,而nextline遇到\r\n会结束
回复 使用道具 举报
不明白你想问什么?
回复 使用道具 举报
键盘录入 使用前必须导包;
如果 你想通过键盘录入一个整数 那么调用nextInt() 方法,该方法返回值是int类型的数据.
如果 你想通过键盘录入一串字符串,那么调用的是nextLine()方法,该方法返回值是 String类型的数据
回复 使用道具 举报
这是因为遇到/r/n你说你不懂的地方我给你解决- -
回复 使用道具 举报
因为nextInt只截取windows系统的\r\n之前的数据,剩下的\r\n就被nextLine截取了,就出现空的获取了
回复 使用道具 举报
nextInt()输入后其实还会包含回车和换行两个字符,刚好被nextLine()接收,而nextLine()的结束标志就是回车换行
回复 使用道具 举报
因为在Scanner类中,用nextInt()获取到数据,底层会直接默认在后面加\r\n,而nextLine()遇到\r\n,就会自动结束,不会在调用了..希望可以帮到你..
回复 使用道具 举报
你输入的整数被nextInt()接收到了,然后你所按的回车也就是"\r\n"被nextLine()接收了,而nextline判断一行的标志就是\r\n,所以就只有整数了.这样的话就是需要一次键盘录入,就创建一个nextxxx(),妈妈再也不用担心出问题了
回复 使用道具 举报
如果先使用nextInt方法来读取一个整数,再用nextLine方法来读取字符串,会发生这样一种情况:nextLine方法不等待我们键盘录入,就运行完了。
发生这种问题的原因在于:在开始输入整数时,一按下回车键,nextInt就读取了整数,但是回车中的换行符,紧接着被nextLine方法读取了,所以nextLine实际上读到了换行符号,并没等待我们键盘录入
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马