二、常用方法

​ 构造一个从输入流读取数据的对象scan,以下方法中若无特别指定,均使用该对象。

	Scanner  scan = new SCanner(Sytem.in);
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

1.void close()

 关闭此扫描器。
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
	scan.close();	//扫描器用完后关闭
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

2.String next()

​ 查找并返回来自此扫描器的下一个完整标记。

	Scanner scan = new Scanner(System.in);
	String str = scan.next();//输入“hello”赋值给str
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">
	String str = "20 a 30 b 40 c";
	Scanner scan = new Scanner(str);
	while(scan.hasNext()) {
		String s = scan.next();
		if(s.matches("\\d+"))
			System.out.println(s);
	}
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

3.boolean hasNext()

​ 如果此扫描器的输入中有另一个标记,则返回 true。

	Scanner scanner = new Scanner(System.in);
    System.out.println("请输入以空格作为分隔符的字符串");//输入:hello world!
    while(scanner.hasNext()) 
        System.out.println(scanner.next());//分行输出hello、world!
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

4.String findInLine(Pattern pattern)

​ 试图在忽略分隔符的情况下查找下一个指定模式。

	String str3 = "1 fish 2";
	Scanner scan3 = new Scanner(str3);// 从str3中获取数据
	Pattern p = Pattern.compile("\\d+\\s*fish\\s*\\d+");
	scan3.findInLine(p);
	MatchResult result = scan3.match();	 	//返回此扫描器所执行的最后扫描操作的匹配结果。
	for(int i = 0; i <= result.groupCount(); i++)
		System.out.println(result.group(i));   //输出扫描结果
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

5.String findInLine(String pattern)

​ 试图在忽略分隔符的情况下查找下一个从指定字符串构造的模式。

	String str3 = "1 fish 2";
	Scanner scan3 = new Scanner(str3);// 从str3中获取数据
	scan3.findInLine("\\d+\\s*fish\\s*\\d+");
	MatchResult result = scan3.match();	  	//返回此扫描器所执行的最后扫描操作的匹配结果。
	for(int i = 0; i <= result.groupCount(); i++)
		System.out.println(result.group(i));   //输出扫描结果
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

6.boolean hasNextBigDecimal()

​ 如果通过使用 nextBigDecimal() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 BigDecimal,则返回 true。

	if(scan.hasNextBigDecimal())//接收并判断
			System.out.println(scan.nextBigDecimal());
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

7.boolean hasNextBigInteger()

​ 如果通过使用 nextBigInteger() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 BigInteger 值,则返回 true。

	if(scan.hasNextBigInteger())
			System.out.println(scan.nextBigInteger());
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

8.boolean hasNextBoolean()

​ 如果通过使用一个从字符串 “true|false” 创建的大小写敏感的模式,此扫描器输入信息中的下一个标记可以解释为一个布尔值,则返回 true。

	Scanner scan = new Scanner(System.in);
	System.out.println("请输入boolean型数据,以空格分割");
	while(scan.hasNextBoolean())
		System.out.println(scan.nextBoolean());
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

9.boolean hasNextByte()

​ 如果通过使用 nextByte() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个字节值,则返回 true。

	 Scanner scanner = new Scanner(System.in);
     System.out.println("请输入以空格作为分隔符的byte类型数据");
     while(scanner.hasNextByte())
         System.out.println(scanner.nextByte());
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

10.boolean hasNextDouble()

​ 如果通过使用 nextDouble() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 double 值,则返回 true。

11.boolean hasNextFloat()

​ 如果通过使用 nextFloat() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 float 值,则返回 true。

12.boolean hasNextInt()

​ 如果通过使用 nextInt() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 int 值,则返回 true。

13.boolean hasNextLine()

​ 如果在此扫描器的输入中存在另一行,则返回 true。

		String str = "Hello world!\nWelcome to China!";
		Scanner scan = new Scanner(str);
		while(scan.hasNextLine())
			System.out.println(scan.nextLine());
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

14.boolean hasNextLong()

​ 如果通过使用 nextLong() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 long 值,则返回 true。

15.boolean hasNextShort()

​ 如果通过使用 nextShort() 方法,此扫描器输入信息中的下一个标记可以解释为默认基数中的一个 short 值,则返回 true。

16.MatchResult match()

​ 返回此扫描器所执行的最后扫描操作的匹配结果。

	String str3 = "1 fish 2 fish";
	Scanner scan3 = new Scanner(str3);// 从str3中获取数据
	scan3.findInLine("\\d+\\s*fish\\s*\\d+\\s*fish\\s*");
	MatchResult result = scan3.match();		
	for (int i = 1; i <= result.groupCount(); i++)
		 System.out.print(result.group(i) + " ");//输出匹配结果
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

17.BigDecimal nextBigDecimal()

​ 将输入信息的下一个标记扫描为一个 BigDecimal。

18.BigInteger nextBigInteger()

​ 将输入信息的下一个标记扫描为一个 BigInteger。

19.BigInteger nextBigInteger(int radix)

​ 将输入信息的下一个标记扫描为一个 BigInteger,radix是指定基数,可以是十进制(10)、二进制(0b10)、八进制(010)、十六进制(0x10)等格式。

	//10进制:10;二进制:0b10;八进制:010;十六进制:0x10
		BigInteger biginteger = scan.nextBigInteger(0b10);//接收二进制数据
		System.out.println(biginteger);//按十进制输出
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

​ 在Scanner常用方法中,有多个方法以int radix作为参数,可参照本例指定符合需求的基数。

20.boolean nextBoolean()

​ 扫描解释为一个布尔值的输入标记并返回该值。

	boolean torf = scan.nextBoolean();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

21.byte nextByte()

​ 将输入信息的下一个标记扫描为一个 byte。

	byte bt = scan.nextByte();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

22.double nextDouble()

​ 将输入信息的下一个标记扫描为一个 double。

	double db = scan.nextDouble();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

23.float nextFloat()

​ 将输入信息的下一个标记扫描为一个 float。

	flaot ft = scan.nextFloat();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

24.int nextInt()

​ 将输入信息的下一个标记扫描为一个 int。

	int age = scan.nextInt()
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

​ Scanner类的nextByte、nextShort、nextFloat、nextDouble、nextLong、nextBoolean、nextLine用法格

式同nextInt。

25.String nextLine()

​ 此扫描器执行当前行,并返回跳过的输入信息。

	String str = scan.nextLine()
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

26.long nextLong()

​ 将输入信息的下一个标记扫描为一个 long。

	long number = scan.nextLong();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

27.short nextShort()

​ 将输入信息的下一个标记扫描为一个 short。

	short sr = nextShort();
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

28.Scanner useDelimiter(Pattern pattern)

​ 将此扫描器的分隔模式设置为指定模式,在Scanner对象上设置一个分隔符,然后通过调用Scanner的

相关方法来获取按照该分隔符划分的输入内容。这样可以更方便地从 输入流只 中提取所需的数据。

 	 String input = "1 fish 2 fish red fish blue fish";
 	 //使用“fish”作为分隔符,\\s*:'\\'表示'\',\\s对应正则式中的\s,表示空白字符,*表示零或多个
 	 //从而:\\s*表示零个或多个空白符。\\s*fish\\s*表示fish前后有零或多个空白符
     Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
     System.out.println(s.nextInt());  	//1
     System.out.println(s.nextInt());  	//2
     System.out.println(s.next());		//red
     System.out.println(s.next());		//blue
     s.close(); 
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

29.Scanner useDelimiter(String pattern)

​ 将此扫描器的分隔模式设置为从指定 String 构造的模式。

	/* 
     使用转义字符"\n"作为分隔符,使得next()接收中间带空格的一行字符串,
     输入hello world后会出hello world,如果不使用"\n"作分隔符,只能接收到hello。
	*/
      Scanner ss = new  Scanner(System.in); 
      ss.useDelimiter("\n"); 
      System.out.println("请输入一行字符:");
      String str2 = ss.next(); 
      System.out.println(str2); 
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

30.Scanner useRadix(int radix)

​ 将此扫描器的默认基数设置为指定基数。

	Scanner scan = new Scanner(System.in);
	scan.useRadix(0x10);
	int b = scan.nextInt();//也可以在该方法中指定基数:nextInt(0x10) 。输入:10
	System.out.println(b); //输出:16
		
 class="hljs-button signin active add_def" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

​ 本文介绍了Scanner类的常用构造方法和常用方法,在实际问题中,可以选择有效的构造方法创建扫描器对象,然后调用相关方法获取数值,从而解决实际问题。更多有用的知识和技能,可查看官网API。

data-report-view="{"mod":"1585297308_001","spm":"1001.2101.3001.6548","dest":"https://blog.csdn.net/zbvcyzh/article/details/142299061","extend1":"pc","ab":"new"}">>
注:本文转载自blog.csdn.net的海边漫步者的文章"https://blog.csdn.net/zbvcyzh/article/details/142299061"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!