Java Scanner 类

java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。

1.使用前需要导入Scanner工具包:

import java.util.Scanner;

2. 创建 Scanner 对象的基本语法:

Scanner input = new Scanner(System.in);

//创建了一个叫input的Scanner对象
注:
import是输入的意思。

util,utiliy的缩写,意即,工具性的包。主要包含集合类(如ArrayList,HashMap等),随机数产生类,属性文件读取类,定时器类等类。

Scanner,扫描仪,使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
next方法:
1)next() :读取不全带空格的字符串(<过滤前面遇到的空格等非有效字符>,直到读取有效字符后结束读取)
2)nextLine() : 可以完全读取带空格的字符串
(以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符)
3)nextInt() :读取int型数字
4)nextFloat() :读取float型数字
5)nextLong() :读取long 型数字
6)nextDouble() :读取double型数字

读取之前都最后使用**hasNext+首字母大写的类型名()**来进行验证读取之前输入是否合法(这种方法比下面谈到的try catch更好理解~)
例如:
Jave之Scanner和不合法输入处理
Jave之Scanner和不合法输入处理

import java.util.Scanner;

public class ScannerTest {
	public static void main(String args[]) {
		System.out.println("nextInt方式:");
		boolean FalseInput = true;
		while(FalseInput) {
			Scanner input = new Scanner(System.in);
			if (!input.hasNextInt()) {
				System.out.println("input is not An integer number");
				continue;
			}
			else {
				int s2 = input.nextInt();
				System.out.println("input integer num is " + s2);
				FalseInput = false;
			}	
			input.close();
		}
	}
}

上面代码的测试:

Jave之Scanner和不合法输入处理Jave之Scanner和不合法输入处理
3.如果使用时出现如图所示提示:Resource leak :‘scanner’ is never closed,需要加上Scannner对象名.close();(一般都是成对使用,放在同一个方法(如果存在循环要放在同一个循环里)<函数>里面)
Jave之Scanner和不合法输入处理
Jave之Scanner和不合法输入处理

**

try catch捕获不合法输入

**
结构示例:

try {
    	d = input.nextInt();
     }catch(Exception e) {
        System.out.println("输入有误!");
      /*如果捕获到异常输入(就此而言输入的不是int整数)*/
        continue;}/*直到没有捕获到异常*/

,,,,,,,,,,,,,,,

  import java.util.Scanner;
      
    public class ScannerTest {
    	public static void main(String[] args) {
    		int d = 0;
    		boolean FalseInput = true;
    		while(FalseInput){
    			System.out.println("请输入一个整数:");
    			Scanner input = new Scanner(System.in);
    			try {
    				d = input.nextInt();
    			}catch(Exception e) {
    			System.out.println("输入有误!");/*如果捕获到异常输入(就此而言输入的不是int整数)*/
    			continue;
    			}/*直到没有捕获到异常*/
    			FalseInput = false;
    		}
    		System.out.println("input num is : "+d);
    	}
    }

测试:

Jave之Scanner和不合法输入处理
Jave之Scanner和不合法输入处理
Jave之Scanner和不合法输入处理
Jave之Scanner和不合法输入处理
注意:
如果Scanner input = new Scanner(System.in);放在了while之前,一旦输入异常将陷于死循环.

相关文章:

  • 2022-12-23
  • 2021-11-14
  • 2022-01-02
  • 2022-02-10
  • 2021-11-29
  • 2021-06-11
  • 2022-12-23
猜你喜欢
  • 2022-01-28
  • 2021-12-27
  • 2021-08-14
  • 2021-04-16
  • 2022-12-23
  • 2021-10-14
  • 2021-11-29
相关资源
相似解决方案