zoukankan      html  css  js  c++  java
  • JAVA Scanner 的一些用法注意事项

    scanner 的几种常见用法

    scanner 方法提供了一种方便从控制台读取数据的方法。使用格式为 Scanner in = new Scanner(System.in); 之后可以对于in做一系列操作。如:

    • 读取下一字符串 next()
    • 读取一整行数据 nextLine()
    • 返回一个布尔值,用于判断下一行是否数据 hasNext()
    • 以特定格式读取数据(正则) useDelimiter(“format”)
    • 读取特定数据:nextxx() nextInt(), nextFloat()等

    程序测试

    测试代码

    此处实现将scanner类的一些常见函数使用进行展示:

    package testScanner;
    
    import java.util.Scanner;
    
    public class testScanner {
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            String aString;
            aString = in.next();//读取单个字符串,遇空格终止读取。使用nextline则可以读取整行
            System.out.println("read result by using .next: " + aString);
            System.out.println("the remant part(staying in the buffer): " + in.next());
            //testFunction();
            in.useDelimiter("[^a-zA-Z]+");//使用正则表达式规范读取格式
            //System.out.println(in.delimiter());
            System.out.println("Only alphabet is allowed:");
            while(in.hasNext()){
                System.out.println(in.next());
            }
            in.close();
        }
    
        public static void testFunction(){
            Scanner test = new Scanner(System.in);
            System.out.println("in the test function");
            test.close();
        }
    }

    程序运行结果

    程序运行结果

    使用过程中的一些注意事项

    (Exception in thread “main” java.util.NoSuchElementExceptionation java.util.Scanner.throwFor(Unknown Source)at java.util.Scanner.next(Unknown Source错误的产生与解决方案)

    依然是上面那一段程序如果调用testFunction函数的话,进过测试可以发现在读取正则部分时,无法实现从控制台输入。 
    这是因为在函数中,声明了一个scanner对象,并且调用了close方法。这可能是由于所有的scanner类共享一个输入流,当其中一个调用关闭函数的时候,所有的scanner对象都关闭了。 
    所以建议大家在编写程序时,在不同地方使用scanner类的时候,注意只需调用一次close方法,并且要注意在此后无任何读控制台操作。错误的用法轻则会导致无法读入。重则会使程序报错。大家有时遇到报错信息为:

    出错提示

    问题大多是由于这种错误操作引起的,此时只需确保只在最后调用一次close方法就可消除此错误信息。

  • 相关阅读:
    Max Sum Plus Plus HDU
    Monkey and Banana HDU
    Ignatius and the Princess IV HDU
    Extended Traffic LightOJ
    Tram POJ
    Common Subsequence HDU
    最大连续子序列 HDU
    Max Sum HDU
    畅通工程再续
    River Hopscotch POJ
  • 原文地址:https://www.cnblogs.com/baorantHome/p/8110203.html
Copyright © 2011-2022 走看看