首页 > 技术文章 > Java基本语法--控制台输入(Scanner类)

asio 2020-02-08 16:01 原文

通过Scanner类获取用户输入时,控制台会一直等待用户的输入,可以输入不同类型的值。本篇博客主要讲解从控制台输入值,即Scanner类的使用方法。



Api文档中关于Scanner类的构造方法



键盘输入:Scanner(InputStream source)

键盘输入数字型:byte,short,int,long,float,double

/*输入数字型:byte,short,int,long,float,double*/
public class scannerDemo {
	public static void main(String args[]) {
		//声明Scanner,方式为键盘输入
		Scanner sc = new Scanner(System.in);
		
		//输入一个int型
		System.out.print("输入一个int型数字:");
		int inum = sc.nextInt();
		System.out.println("你输入了一个int型数学:" + inum);
		
		//判断输入的是否为int型
		System.out.print("输入一个int型数字:");
		if(sc.hasNextInt()) {
			int inum2 = sc.nextInt();
			System.out.println("输入的是int型值:" + inum2);
		}else {
			System.out.println("输入的类型不是int型");
		}		
		
		//从键盘输入byte型值
		System.out.println("输入一个byte型值");
		byte b = sc.nextByte();
		System.out.println("输入的byte值为:" + b);
		
		//从键盘输入short型值
		System.out.println("输入一个short型值");
		short s = sc.nextShort();
		System.out.println("输入的short值为:" + s);		
		
		//从键盘输入long型值
		System.out.println("输入一个long型值");
		long l = sc.nextLong();
		System.out.println("输入的long值为:" + l);			
		
		//从键盘输入float型值
		System.out.println("输入一个float型值");
		float f = sc.nextFloat();
		System.out.println("输入的float值为:" + f);
		
		//从键盘输入double型值
		System.out.println("输入一个double型值");
		double d = sc.nextDouble();
		System.out.println("输入的double值为:" + d);
	}
}

展示效果:

键盘输入字符串型:String

/*输入String型*/
public class InputStringDemo {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        
        //nextLine形式输入String值
		System.out.println("输入一个字符串");
		System.out.println(sc.hasNextLine());  //判断是否有下一行
		String str  = sc.nextLine();
		System.out.println("输入的String值为:" + str);
		
		//next形式输入String值
		System.out.println("再输入一个字符串");
		System.out.println(sc.hasNext());   //判断是否有非空字符
		String string  = sc.next();
		System.out.println("输入的String值为:" + string);
    }
}

展示效果:


۵ has xxxx是检查输入是否符合该形式,返回值是boolean型;next xxx是以该形式读取输入的值

۵ 采用has xxxx的话,后面也要用next xxxx。比如前面用hasNextLine,那么后面要用 nextLine 来处理输入

hasNext与hasNextLine的区别:

۵ hasNext是检查是否有非空字符

۵ hasNextLine用于检查控制台输入或者读取文本文件时的输入扫描器(java.util.Scanner类)扫描,当扫描到存在下一行时,hasNextLine返回true,没有下一行输入或者文本文件没有下一行时,返回false

next与nextLine的区别:

۵ next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或等视为分隔符或结束符,简单来说next方法不能得到带空格的字符串

۵ nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的。

键盘输入字符型:char

public class charDemo {
    public static void main(String args[]) {
        //输入char字符:实际上就是String字符串取第一个字符
		System.out.println("输入一个字符:");
		char c1 = sc.next().charAt(0);
		System.out.println(c1);
		System.out.println("输入一个字符:");
		char c2 = sc.next().toCharArray()[0];
		System.out.println(c2);
		System.out.println("输入一个字符:");
		char c3 = sc.next().charAt(1);
		System.out.println(c3);
    }
}

展示效果:

۵ Java中没有单独定义输入char型变量的方法,char型变量的输入是通过String类的charAt(index)或toCharArray()[index]方法来实现,建议使用charAt(0)



Scanner方法摘要


本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布

推荐阅读