【问题标题】:Using a scanner across multiple classes in Java?在 Java 中跨多个类使用扫描仪?
【发布时间】:2014-02-19 17:29:37
【问题描述】:

我有一个 Java 程序,它需要在多个类的多个点从控制台获取用户输入。我尝试在每个班级中使用扫描仪,但是当我关闭一个扫描仪时,它会关闭 system.in,所以我想在整个程序中使用相同的扫描仪。我在主类中打开了扫描仪,但如何在其他类中使用相同的扫描仪?

【问题讨论】:

  • 您可以传递对类的引用,使用静态字段..
  • 或者您根本无法通过管道将 system.in 输入扫描仪。只需将输入作为字符串传递给扫描仪。
  • 你为什么要关闭Scanners,知道它会关闭标准输入?
  • 我认为关闭您使用的所有资源只是一种好习惯?

标签: java class


【解决方案1】:

您必须通过构造函数将扫描仪实例注入其他类。如下:

import java.util.*;

public class Test1
{
    private Scanner _scanner;

    public Test1(Scanner sc)
    {
        _scanner = sc;
    }
}

public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        Test1 testObj = new Test1(sc);
    }
}

【讨论】:

    【解决方案2】:
    import java.util.Scanner;
    
    public class ScannerSaver 
    {
        private Scanner scan;
    
        public ScannerSaver(Scanner s)
        {
            this.scan = s;
        }
    }
    

    只需将扫描仪作为参数传入即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2014-05-20
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多