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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Scanner sc = new Scanner(System.in);
int x = sn.nextInt();
String line = sc.nextLine();
这样不行。
老师讲的当你输完int后,敲回车,系统会默认把回车当作String输出,我们是看不到我们输入的String的。
那么问题来了
String line1 = sc.nextLine();
String line2 = sc.nextLine();
这样为什么就不出问题了呢?为什么敲回车的时候没有把回车当作String输出呢?

7 个回复

正序浏览
键盘录入一个int数后敲回车,其实录入的是一个int数和\r\n, nextInt()方法只接受int数值便结束了,而nextLine()方法是遇到\r\n便结束.  当有两个nextLine()方法时,敲回车只是结束了第一个nextLine()方法, So......
回复 使用道具 举报
Scanner scan = new Scanner(System.in);
                System.out.println("請輸入你想要的內容");
                 int i=scan.nextInt();//输入1 2 3到Scanner对象--这边传入1+间隔符+2+间隔符+间隔符+3+换行符
                 System.out.println(i);//结果:1。这边取到第一个间隔符前的内容

                 String str=scan.nextLine();//nextLint(),取换行符前的内容,遇到换行符就结束
//                 System.out.println(i+str);
                 System.out.println(str);// 2 3。取到Scaner对象剩下的内容(1被取了,剩下换行符前的  2 3--包含间隔符(空格))

                String str2 = scan.nextLine();//1 2 3
                System.out.println(str2);//1 2 3

                String str3 = scan.nextLine();//1 2 3
                System.out.println(str3);//1 2 3
刚学java,学了两月。老师那时没说这个点,刚看了风清扬的视频,现在看到这帖子做了个测试,受教了
回复 使用道具 举报
ZEROCRF 发表于 2016-1-10 18:24
因为String line1 = sc.nextLine();String line2 = sc.nextLine();这段代码中需要你输入两个String,你打入 ...

非常感谢,理解了
回复 使用道具 举报
唱一些温暖 发表于 2016-1-10 12:52
next()或者nextXxx() 每次取到一个间隔符前面的数据   如: 输入 a b c 取值应该是a,因为a后面有空格
next ...

谢谢,理解了,
回复 使用道具 举报
因为String line1 = sc.nextLine();String line2 = sc.nextLine();这段代码中需要你输入两个String,你打入的第一个回车会被第一个String截取,就不会影响第二个String的录入了
回复 使用道具 举报
本帖最后由 唱一些温暖 于 2016-1-10 13:08 编辑

next()或者nextXxx() 每次取到一个间隔符前面的数据   如: 输入 a b c 取值应该是a,因为a后面有空格
nextLine() 每次取一个换行符前面的数据  如:输入 a b c 回车,取值 就是a b c

换行符属于间隔符,但间隔符不只有换行符。


回复 使用道具 举报
本帖最后由 d345462262 于 2016-1-10 12:27 编辑

int 和 String 类型不一样,想输一个以后再输另一个,你得有俩Scanner。
Scanner sc = new Scanner(System.in);
Scanner sc1 = new Scanner(System.in);

int x = sc.nextInt();
String line = sc1.nextLine();

这样就能输完数字,输文字了



回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马