2013-10-03 5 views
0

У меня возникли проблемы с запуском моей программы в интерактивном режиме.Невозможно выяснить, как ссылаться на объект сканера в другом классе

В одном из классов System.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); 
     ... 
    } 
} 

Проблема, которую я имею в моем другом классе. Я не знаю, как назвать точку или ссылку на этот же сканер.

EDIT:

Хорошо так что мой класс принимает сканер в качестве аргумента. Есть ли способ вызвать эту переменную в методе позже?

public someClass (Scanner sc) 
{ 

} 

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

Когда я пытаюсь что-то вроде этого, я получаю сообщение об ошибке, которое не может найти переменную sc.

ответ

3

Вы не можете ссылаться на тот же объект Scanner, если вы не передадите эту ссылку другому классу или его экземпляру.

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

экземпляр Scanner передается в качестве аргумента конструктора SomeClass. Вы можете сохранить эту ссылку в переменной и повторно использовать ее, когда вам нужно.

+0

Хорошо, поэтому мой класс принимает сканер в качестве аргумента. Есть ли способ вызвать эту переменную в методе позже? 'public someClass (Scanner sc) {}' 'public void test (String a) { someClass.sc.nextLine(); } ' Я получаю сообщение об ошибке, если попытаюсь назвать его таким образом. – mrT

+0

@ user2840824 Обновите свой ответ с помощью нового кода. Прежде чем продолжить, прочитайте [java учебник по классам и объектам.] (Http://docs.oracle.com/javase/tutorial/java/javaOO/) –

+0

Хорошо, что я обновил приведенный выше код и посмотрел на этот учебник сейчас , – mrT

Смежные вопросы