Scanner接受用户输入

接受用户输入

import java.util.Scanner;

public class Demo1 {

	public static void main(String[] args) {
		// 扫描系统的输入
		Scanner input = new Scanner(System.in);
		//接受用户输入的方法用于接收各种数据类型
//		input.nextInt();
//		input.nextBoolean();
//		input.nextByte();
//		input.nextLong();
//		input.nextShort();
//		input.nextFloat();
//		input.nextDouble();
		
		System.out.println("请输入nextLine的内容:");
		String str0 = input.nextLine();
		System.out.println("请输入next接受的内容:");
		//用于接受任何数据类型返回字符串类型
		String str1 = input.next();
		//next接受文字 nextLine接受一行文字,当输入时同时满足两个方法,所以nextLine方法未让用户输入
		
		/*next 和 nextLine不能同时使用:
		 * nextLine会接受上一个回车,两个方法同时监听到了回车同时执行
		 */
		
		//next 可以以空格结尾 无法获取含有空格的输入
		
		/*关于nextLine()放在后面获取不到值的问题:
		 * 因为next()会遗留一个回车,程序再通过next方法时会留下一个enter键,会被nextLine接受,导致少了一行
		 */
		System.out.println("请输入nextLine的内容:");
		String str2 = input.nextLine();
		System.out.println("请输入nextInt的内容:");
		int str3 = input.nextInt();
		System.out.println("请输入nextLine的内容:");
		String str4 = input.nextLine();
		input.close();
		
		System.out.println(str0+"=============="+str1+"==========="+str2+"=========="+str3+"================"+str4);

	}

}

运行截图:image-20210905161547035

判断用户输入类型:

public class Demo10 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数字:");
		int i = input.nextInt();
		System.out.println("您输入的是:"+i);
	}

}

代码要求输入的是数字,但是这时候输入abc会发生什么呢?

运行如图:image-20210924234338812

会发现程序报错:InputMismatchException :你输入的与要求输入的数据类型不符。

如何避免这种情况发生呢?我们可以在接受用户输入之前判断用户输入的类型。

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数字:");
		//判断用户输入的是什么类型:
		if(!input.hasNextInt()) {
			System.out.println("您输入的不是数字!");
		} else {
			int i = input.nextInt();
			System.out.println("您输入的是:"+i);
		}
		
	}

如果用户输入的不是int类型数据就会输出“您输入的不是数字”。

运行结果:image-20210924235016966

posted @ 2021-09-05 16:18  雨溟  阅读(174)  评论(0)    收藏  举报