public class test{
public static void main (String[args]){
Scanner sc = new Scanner(System.in);
System.out.println("输入");
int a = sc.nextInt();
System.out.println("输入");
char ch = sc.nextLine().charAt(0);
System.out.println(ch);
System.out.println(a);
}
//控制台输出
输入
1
输入
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:658)
at test.main(test.java:16)
原因:
输入完第一个int值以后按回车键,第二个nextLine方法接受到的字符串为空
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入");
int i = sc.nextInt();
System.out.println("输入");
String str = sc.nextLine();
System.out.println("=========");
System.out.println(str);
System.out.println("===============");
System.out.println(str.length());
System.out.println("===============");
System.out.println(i);
System.out.println("==========");
}
}
//控制台输出
输入
1
输入
=========
===============
0
===============
1
==========
而把nextLine()方法换成next()方法就可以,因为只有检测到有字符输入时执行回车才有效,否则回车在控制台只起到换行的作用,不实际录入数据示例
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入");
int i = sc.nextInt();
System.out.println("输入");
String str = sc.next();
System.out.println("=========");
System.out.println(str);
System.out.println("===============");
System.out.println(str.length());
System.out.println("===============");
System.out.println(i);
System.out.println("==========");
}
//控制台输出
输入
1
输入
aaa
=========
aaa
===============
3
===============
1
==========
而next()方法中,如果录入字符后再输入空格再录入一段字符后回车,直接将该字符串解析为以空格字符做间隔的两次录入数据,并且不录入空格(当然如果是输入字符串后按几个回车在输出也是一样的)直接在控制台打印两个字符串示例
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入");
String str1 = sc.next();
System.out.println("输入");
String str2 = sc.next();
System.out.println("=========");
System.out.println(str1);
System.out.println("===============");
System.out.println(str2);
System.out.println("==========");
}
}
//最后必须按回车才行,如果是空格不会结束录入操作
//控制台(输入一个aaa以后按几个空格在输入一个aaa再按回车)
输入
aaa aaa
输入
=========
aaa
===============
aaa
==========
//控制台(输入一个aaa以后按几个回车在输入一个aaa再按回车)
输入
aaa
输入
aaa
=========
aaa
===============
aaa
==========