黑马程序员技术交流社区

标题: Scanner输入int 和 String时的为什么不行? [打印本页]

作者: 黑色皮肤的马    时间: 2016-1-10 10:23
标题: Scanner输入int 和 String时的为什么不行?
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输出呢?


作者: d345462262    时间: 2016-1-10 12:25
本帖最后由 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();

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




作者: 唱一些温暖    时间: 2016-1-10 12:52
本帖最后由 唱一些温暖 于 2016-1-10 13:08 编辑

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

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



作者: ZEROCRF    时间: 2016-1-10 18:24
因为String line1 = sc.nextLine();String line2 = sc.nextLine();这段代码中需要你输入两个String,你打入的第一个回车会被第一个String截取,就不会影响第二个String的录入了
作者: and2long    时间: 2016-1-10 23:43
键盘录入一个int数后敲回车,其实录入的是一个int数和\r\n, nextInt()方法只接受int数值便结束了,而nextLine()方法是遇到\r\n便结束.  当有两个nextLine()方法时,敲回车只是结束了第一个nextLine()方法, So......
作者: 黑色皮肤的马    时间: 2016-1-11 21:20
唱一些温暖 发表于 2016-1-10 12:52
next()或者nextXxx() 每次取到一个间隔符前面的数据   如: 输入 a b c 取值应该是a,因为a后面有空格
next ...

谢谢,理解了,
作者: 黑色皮肤的马    时间: 2016-1-11 21:21
ZEROCRF 发表于 2016-1-10 18:24
因为String line1 = sc.nextLine();String line2 = sc.nextLine();这段代码中需要你输入两个String,你打入 ...

非常感谢,理解了
作者: 小白丶丶丶    时间: 2016-4-30 18:04
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,学了两月。老师那时没说这个点,刚看了风清扬的视频,现在看到这帖子做了个测试,受教了





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