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
实例化,并添加更多代码来实现该方法。这并不是真正的简化。