黑马程序员技术交流社区

标题:  关于javaAPI中Scanner类的nextLine()方法 [打印本页]

作者: 陈红建    时间: 2012-8-2 15:00
标题:  关于javaAPI中Scanner类的nextLine()方法
Scanner console= new Scanner(System.in);
 System.out.print("输入0结束运行;输入任意数
向下运行: ");
 int flag=console.nextInt(); 
 if(flag==0){
 System.out.println("运行结束!");
 }else{
 System.out.print("请输入要查询的字符:");
 String str=console.nextLine();
 System.out.print("请入查询的字符串:");
 String str1=console.nextLine();
 int[] ary={};
 for(int i=0;i<str1.length();i++){
 char c = str1.charAt(i);
 if(str.charAt(0)==c){
 ary = Arrays.copyOf(ary, ary.length+1);
 ary[ary.length-1]=i;
 }
 }
 System.out.println(str+"在字符串中的位置是:"
+Arrays.toString(ary));
程序else部分为什么使用nextLine()方法时,直
接输出两句提示语句?
作者: 李东升    时间: 2012-8-2 15:31
  1. Scanner console= new Scanner(System.in);
  2.                  System.out.print("输入0结束运行;输入任意数向下运行: ");
  3.                  int flag=Integer.parseInt(console.nextLine());
  4.                  if(flag==0){
  5.                  System.out.println("运行结束!");
  6.                  }else{
  7.                  System.out.print("请输入要查询的字符:");
  8.                  String str=console.nextLine();
  9.                  System.out.print("请入查询的字符串:");
  10.                  String str1=console.nextLine();
  11.                  int[] ary={};
  12.                  for(int i=0;i<str1.length();i++){
  13.                  char c = str1.charAt(i);
  14.                  if(str.charAt(0)==c){
  15.                  ary = Arrays.copyOf(ary, ary.length+1);
  16.                  ary[ary.length-1]=i;
  17.                  }
  18.                  }
  19.                  System.out.println(str+"在字符串中的位置是:"
  20.                 +Arrays.toString(ary));
  21.                  }
复制代码
这样就没问题了。第一个输入选择的,把nextInt()改成nextLine()就好了。至于为什么会输出两行,是因为你上一次使用的是nextInt,只接受int值,你按下的enter就保存到缓存中,在下一次读取用户输入的时候,enter就起作用了。而使用nextLine,一次读取一行,包括你按下的enter,然后又转换成int值,就不会出现这问题了、、
作者: 胡文凡    时间: 2012-8-2 15:59
楼上正解!!
作者: 陈红建    时间: 2012-8-2 18:12
标题求加分啊。这个也搞懂了。由于我是在手机上,改状态还挺费劲的。上了电脑以后就全都改成已解决




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