1.Scanner类的next()方法不是从控制台读入字符的,它也是读入字符串的。
2.读入字符可以用这样的方法:
Scanner in=new Scanner(System.in);
String a=in.nextLine();
char b=a.charAt(0);
3.next()与nextLine()的区别:next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。意思是next()读入的字符串中没有空格,就算你在控制台输入的是" abc def ",最终它读给变量的是"abc";
nextLine()方法会将打Enter键前所有输入字符读入,包括空格。
4.在next(),nextInt(),nextFloat(),nextDouble()等方法后连用nextLine()方法出现的问题
例如:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String a=in.next();
String b=in.nextLine();
System.out.println("a的结果:"+a);
System.out.println("b的结果:"+b);
}
}
运行结果:
1234
a的结果:1234
b的结果:
这里的nextLine()相当于只读取了上一个方法留下enter键,解决方法就是在String a=in.next();与String b=in.nextLine();之间再加一个in.nextLine();让它去读取那个enter键,后面的String b=in.nextLine();则可以读取到控制台输入的数据。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String a=in.next();
in.nextLine();
String b=in.nextLine();
System.out.println("a的结果:"+a);
System.out.println("b的结果:"+b);
}
}
运行结果:
1234
5678
a的结果:1234
b的结果:5678