Java scanner类在方法中的使用

Java scanner类在方法中的使用,java,class,Java,Class,我目前有一个项目,它全部在一个类中,并且有多个方法。到目前为止,在每种方法中,我都必须使用顶部的这行代码来初始化扫描仪。从用户处获取输入 Scanner input = new Scanner(System.in); 我的问题是,有没有更有效的方法 编辑:我的意思是,减少我写这行代码的次数?我是否可以初始化一次并重新使用它 Scanner input 外部方法,并且被所有人使用?也许把它创建为静态的 在构造函数中,您可以放置此代码 input = new Scanner(System.in

我目前有一个项目,它全部在一个类中,并且有多个方法。到目前为止,在每种方法中,我都必须使用顶部的这行代码来初始化扫描仪。从用户处获取输入

Scanner input = new Scanner(System.in);
我的问题是,有没有更有效的方法

编辑:我的意思是,减少我写这行代码的次数?我是否可以初始化一次并重新使用它

Scanner input 
外部方法,并且被所有人使用?也许把它创建为静态的

在构造函数中,您可以放置此代码

input = new Scanner(System.in); 
static Scanner input;

static {
  input= new Scanner(System.in); 
 }
或者,如果您采用静态方式,则可以添加此代码

input = new Scanner(System.in); 
static Scanner input;

static {
  input= new Scanner(System.in); 
 }
这对你有用吗


不确定你的目标到底是什么。

这可能会对你的表现产生微不足道的影响,但如果你像我一样,想以神经质高效的方式完成这项任务,我建议你将
输入
作为课堂的一个字段。通过这种方式,它将享受类的作用域,并且可以被所有方法访问。为了确保它始终是一个有效的扫描程序(从不为null),它可能应该
publicstaticfinal

class TheClass
{
    public static final Scanner input = new Scanner(System.in);

    public void someMethod()
    {
          String text = input.readLine();
    }

    ...
}

作业标签是。你说的“更有效率”是什么意思?您想切换到另一个类,还是更有效地使用扫描仪?您现在的操作方式有问题吗?使用singleton模式和工厂方法进行延迟初始化。@Shivamkara singleton很少是合适的解决方案,在这种情况下显然不合适。也许问题在于不了解对象范围?使扫描仪成为一个对象的字段(精确的代码行将起作用),然后在该对象的每个方法中都可以使用输入。如果没有一个更具体的问题,我真的无法进一步澄清,展示一些你迄今为止尝试过的现有代码会有很大帮助。@Shivamkara,因为这看起来像是入门级的任务,放弃模式和懒惰的初始化看起来像是适得其反的模式wank。您将使用对
getScanner()
的调用来替换每个
Scanner
实例化,并添加更多代码来实现该方法。这并不是真正的简化。