java中Scanner中close()的的使用方法?

 package hihocoder;
import java.util.Scanner;

public class CopyOfTrieTree {
    public static void main(String args[]) {
        CopyOfTrieTree m = new CopyOfTrieTree();
        m.getInput(true);
        System.out.println(2222);
        m.getInput(false);
    }

    public void getInput(boolean b) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        for (int i = 0; i < n; i++) {
            String s = in.next();
            if(b)
                System.out.println(s+0);
            else 
                System.out.println(s+1);
        }
        in.close();//为什么这里加上close(),程序就运行错误,不加就是对的
    }

}

如上程序,为什么加上scanner的关闭函数后,程序就运行错误,不加close函数,运行就是对的???

 in.close()

这句已经将System.in输入流关闭,再次调用getInput将会报错。

把in换成scan试试

把错误的结果截一下图

1
we
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at hihocoder.TrieTree.getInput(TrieTree.java:18)
at hihocoder.TrieTree.main(TrieTree.java:13)

我的不报错,但又没有in.close都是在定义对象那个地方提出警告