Scanner 类
案例:演示使用Scanner的小技巧
问题描述:先用nextInt()接受整数,然后再用nextLine()接受字符串,导致字符创无法接受。
产生原因:
1.nextInt()方法的结束标记是: \r \t,但是该方法只接受整数,不接受\r \t。
-
nextLine()方法的结束标记是: \r \t,识别到上边遗留下来的 \r \t后,直接结束了
原代码:
public static void main(String... args) { //1.创建对象 Scanner sc = new Scanner(System.in); //2.提示用户输入 System.out.println("请输入一个整数:"); //3.调用输入方法,并输出 int num = sc.nextInt(); System.out.println("num:" + num); //接受并输出,字符串 System.out.println("请输入一个字符串:"); String str = sc.nextLine(); System.out.println("str:" + str); }
解决方案:
1.采用next()方法解决
注意:next()方法结束的标记是空格。
public static void main(String... args) { //1.创建对象 Scanner sc = new Scanner(System.in); //2.提示用户输入 System.out.println("请输入一个整数:"); //3.调用输入方法,并输出 int num = sc.nextInt(); System.out.println("num:" + num); //接受并输出,字符串 System.out.println("请输入一个字符串:"); String str = sc.next(); //使用next()方法 System.out.println("str:" + str); }
2.重新调用一次nextLine()
public static void main(String... args) {
//1.创建对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入
System.out.println("请输入一个整数:");
//3.调用输入方法,并输出
int num = sc.nextInt();
System.out.println("num:" + num);
//接受并输出,字符串
System.out.println("请输入一个字符串:");
sc.nextLine(); //再次调用sc.nextLine(),抵消上一\r\t
String str = sc.nextLine();
System.out.println("str:" + str);
}
3.重新new一个Scanner对象
public static void main(String... args) {
//1.创建对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入
System.out.println("请输入一个整数:");
//3.调用输入方法,并输出
int num = sc.nextInt();
System.out.println("num:" + num);
//接受并输出,字符串
System.out.println("请输入一个字符串:");
sc = new Scanner(System.in); //重新new一个Scanner对象
String str = sc.nextLine();
System.out.println("str:" + str);
}
4.实际开发中,都用字符串接受用户输入的参数,然后把字符创类型的数字转化成对应的int类型的数字即可。
调用Inter.parseInt()方法将字符串数字转化为int数字
public static void main(String... args) {
//1.创建对象
Scanner sc = new Scanner(System.in);
//2.提示用户输入
System.out.println("请输入一个整数:");
//3.调用输入方法,并输出
String s1 = sc.nextLine();
//将字符串类型的数字转化为int类型
int num = Integer.parseInt(s1+3);
System.out.println("num:" + num);
//接受并输出,字符串
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
System.out.println("str:" + str);
}