黑马程序员技术交流社区

标题: Scanner 为什么不能录入字符串?? [打印本页]

作者: n_Nie1991    时间: 2016-1-5 23:31
标题: Scanner 为什么不能录入字符串??
public static void main(String[] args) {
                Scanner sc  = new Scanner(System.in);
                System.out.println("请输入第一个整数");
                int  i =  sc.nextInt();
                System.out.println("请输入第二个字符串");
                  String j =  sc.nextLine();
                System.out.println("i ="+i+",j="+j);
               
        }



打印的结果是
请输入第一个整数
10
请输入第二个字符串
i =10,j=
为什么请输入第二个字符串会自动打印,而不能输入.

作者: 彬小彬    时间: 2016-1-5 23:54
  1. import java.util.Scanner;
  2. public class Test{
  3.         public static void main(String[] args) {
  4.                 Scanner sc  = new Scanner(System.in);
  5.                 System.out.println("请输入第一个整数");
  6.                 int  i =  sc.nextInt();
  7.                 System.out.println("请输入第二个字符串");
  8.                 String j =  sc.next();//这样写就没事儿了
  9.                 System.out.println("i ="+i+",j="+j);
  10.                
  11.         }
  12. }
复制代码

作者: shenfuhan    时间: 2016-1-5 23:57
因为遇到回车换行,系统默认输入字符串也结束了
作者: 彬小彬    时间: 2016-1-5 23:57
补一个截图C:\Users\彬彬\Desktop
作者: 彬小彬    时间: 2016-1-5 23:59
这是运行的截图,你可以自己试试

QQ截图20160105235613.png (3.36 KB, 下载次数: 187)

运行截图

运行截图

作者: luyang18    时间: 2016-1-6 12:35
视频上有讲解
作者: 曾宇    时间: 2016-1-6 15:11
nextInt获取下一次输入的数字。nextLine获取一行。而nextLine是可以获取回车空格等分隔符的。你的nextLine实际获取的是10后面的回车,获取到回车后,nextLine方法就已经结束了。所以不显示任何数据,也不能输入。把nextLine改成next就可以了。因为next会自动去掉获取的回车空格等特殊符号
作者: ConsciousStream    时间: 2016-1-6 17:37
楼上正解!
作者: keaitao0321    时间: 2016-1-6 18:45
学习了!!
作者: chengz    时间: 2016-1-6 20:16
学习了!!

作者: 云鱼    时间: 2016-1-6 21:24
可以录入字符串,用nextLIne()方法
作者: 黑色皮肤的马    时间: 2016-1-6 22:34
把int-->String需要注意:如果写成int i = sc.nextInt(); String j = sc.nextLine();那么,当运行输入一个整数的时候,再按回车,系统会默认把回车当做String类型的数据.可以这样解决:Scanner sc = new Scanner(System.in);   int a = sc.nextInt();   sc = new Scanner(System.in); 这样就是说重新创建一个Scanner对象来接受数据。                                String b = sc.nextLine();
作者: n_Nie1991    时间: 2016-1-6 23:11
彬小彬 发表于 2016-1-5 23:54

只是有点弄不懂,如果把第一个录入整数也改 调用nextLine() 方法  录入字符串 就没事.  
作者: n_Nie1991    时间: 2016-1-6 23:13
彬小彬 发表于 2016-1-5 23:54

谢谢
作者: 放养的饼干    时间: 2016-1-6 23:15
都用nextLine();吧,省的出现各种麻烦




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