Java 无法确定如何引用不同类中的扫描程序对象

Java 无法确定如何引用不同类中的扫描程序对象,java,Java,我很难让我的程序以交互方式运行 在其中一个类中,系统.In被更改为从文本文件读取,如下所示: public class mainClass { public static void main(String[] args) { ... try {System.setIn(new java.io.FileInputStream("foo.txt"));} catch (java.io.FileNotFoundException e) {}

我很难让我的程序以交互方式运行

在其中一个类中,
系统.In
被更改为从文本文件读取,如下所示:

public class mainClass
{
    public static void main(String[] args)
    {
      ...
        try {System.setIn(new java.io.FileInputStream("foo.txt"));} 
        catch (java.io.FileNotFoundException e) {}
        Scanner sc = new Scanner(System.in);

        someClass instance = new someClass(sc);
      ...
    }
}
我遇到的问题是在我的另一节课上。我不知道如何调用同一扫描仪的点或引用

编辑:


好的,我的类接受扫描器作为参数。有没有办法在以后的方法中调用该变量

public someClass (Scanner sc)
{

}

public void test(String a)
{
   someClass.sc.nextLine();
}

当我尝试这样的操作时,我得到一个错误,它说它找不到变量sc。

您不能引用相同的
Scanner
对象,除非您将该引用传递给另一个类或它的某个实例

Scanner sc = new Scanner(System.in);
SomeClass instance = new SomeClass(sc);

Scanner
实例作为参数传递给
SomeClass
的构造函数。您可以将该引用保存在变量中,并在需要时重用它。

除非将该引用传递给另一个类或它的某个实例,否则不能引用同一个
Scanner
对象

Scanner sc = new Scanner(System.in);
SomeClass instance = new SomeClass(sc);

Scanner
实例作为参数传递给
SomeClass
的构造函数。您可以将该引用保存在变量中,并在需要时重用它。

好的,因此我的类接受scanner作为参数。有没有办法在以后的方法中调用该变量
public someClass(Scanner sc){}
public void test(String a){someClass.sc.nextLine();}
如果我尝试以这种方式调用它,我会收到一个错误。@user2840824请用新代码更新您的答案。在继续之前,请阅读“好的,我已经更新了上面的代码”并查看该教程。@user2840824请浏览我发布的链接。变量具有作用域。您需要将构造函数中的
sc
引用分配给成员字段。然后,您可以在其他实例方法中使用该成员。您必须将scanner保存到一个局部变量——现在,它正在传入,然后在构造函数退出时丢失。好的,我的类接受scanner作为参数。有没有办法在以后的方法中调用该变量
public someClass(Scanner sc){}
public void test(String a){someClass.sc.nextLine();}
如果我尝试以这种方式调用它,我会收到一个错误。@user2840824请用新代码更新您的答案。在继续之前,请阅读“好的,我已经更新了上面的代码”并查看该教程。@user2840824请浏览我发布的链接。变量具有作用域。您需要将构造函数中的
sc
引用分配给成员字段。然后,您可以在另一个实例方法中使用该成员。您必须将scanner保存到一个局部变量——现在,它正在传入,然后在构造函数退出时丢失。