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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈红建 中级黑马   /  2012-8-2 15:00  /  2424 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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()方法时,直
接输出两句提示语句?

3 个回复

倒序浏览
  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值,就不会出现这问题了、、
回复 使用道具 举报
楼上正解!!
回复 使用道具 举报
标题求加分啊。这个也搞懂了。由于我是在手机上,改状态还挺费劲的。上了电脑以后就全都改成已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马