Java方法不会执行多次

Java方法不会执行多次,java,methods,method-call,Java,Methods,Method Call,我试图让printMethod方法对6个不同的输入执行6次,但它只需要一个输入,输出一次结果,然后结束。我曾尝试将方法调用定位在不同的位置,但似乎没有任何区别。有人能告诉我我做错了什么吗 import java.util.Scanner; public class Lab_Week4_PrintTable_Part2 { public static void main(String[] args) { printMethod(); printMe

我试图让printMethod方法对6个不同的输入执行6次,但它只需要一个输入,输出一次结果,然后结束。我曾尝试将方法调用定位在不同的位置,但似乎没有任何区别。有人能告诉我我做错了什么吗

 import java.util.Scanner;
 public class Lab_Week4_PrintTable_Part2 {
    public static void main(String[] args)   {

        printMethod();
        printMethod();
        printMethod();
        printMethod();
        printMethod();
        printMethod();

        }

        private static void printMethod() {
            Scanner data = new Scanner (System.in);
            String output = data.nextLine();
            System.out.println("---------------------");     
            System.out.println("|   |   |   |   |   |");
            System.out.println(output);
            System.out.println("|   |   |   |   |   |");     
            System.out.println("---------------------");
            data.close();
    }

     }

这是由于关闭了使用
系统打开的
扫描仪

System.in
由JVM打开,如果您在关闭
扫描仪时强制关闭它,您将发现在程序的其余部分无法再次打开它

如果您不想看到警告,并且您的程序将按预期工作,只需删除行
data.close()
,并抑制
扫描仪的警告

通常,您不想关闭正在使用
System.in的
扫描仪
,而
System.in
将自动关闭,因此无需担心


请注意,如果使用
文件而不是
系统打开它,则应该关闭
扫描仪
。在

中,在任何情况下,OP都应该只有一个
扫描仪
,而不是每次调用该方法时都重新声明/重新实例化它,只需重新使用该方法即可object@Frakcool是的,这是真的,但是,也许这意味着它是一个独立的方法,不依赖于任何外部交互,我可以理解为什么希望在方法内部声明它。这取决于这里的目标,两者都可能有原因。我同意@nexevist这一点,非常感谢。我以前认为让扫描仪打开是不好的做法,但有时似乎有必要让它打开open@Charlie我认为在课堂环境中,他们通常不会解释关闭的细节,只是说总是关闭它,这通常是正确的,这是可以理解的错误。