黑马程序员技术交流社区
标题:
关于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
Scanner console= new Scanner(System.in);
System.out.print("输入0结束运行;输入任意数向下运行: ");
int flag=Integer.parseInt(console.nextLine());
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));
}
复制代码
这样就没问题了。第一个输入选择的,把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