Как автоматически генерировать ответы для System.out.println

#java #java.util.scanner

#java #java.util.scanner

Вопрос:

У меня есть два класса. Класс A предлагает пользователю ввести число 9 раз с помощью Scanner (System.in ). Класс B реализует класс A.

Как я могу автоматизировать ответы для класса A при запуске класса B. Например, когда я запускаю класс B, как я могу заставить компьютер отвечать цифрой «3» каждый раз, когда класс A запрашивает меня ввести число?

 public class A {
     private Scanner scan;

     public A() throws FileNotFoundException{
          scan = new Scanner(System.in);
          for(int i=1;i<=9;i  ){
               System.out.println("Enter #");
               int num = scan.nextInt();
          }
     }
}
public class B{
     public B(){
          A runA = new A();
     }
     public static void main(String[] args) {
          B runB = new B();
     }
}
  

Комментарии:

1. Пожалуйста, покажите свой код. Невозможно правильно ответить на ваш вопрос, не угадав.

2. Вы уверены, что B следует реализовать (я полагаю, вы имели в виду extends ) класс A ? Для меня это не имеет особого смысла. Или вы просто имели в виду использование ?

3. Получаете ли вы входные данные с помощью nextLine() ? Поместите знак System.out.println("3") выше или ниже строки с надписью Scanner.nextLine() в зависимости от того, хотите ли вы отобразить его до или после ввода. Это должно быть сделано в классе A. Если вы хотите, чтобы это было сделано в классе B, вам придется предпринять дополнительные шаги. Однако вы должны предоставить некоторый код.

4. Запись @Kars в System.out не заполняется System.in . Насколько я понял, OP хочет, чтобы его nextLine вызов считывал пользовательский ввод, установленный из B , вместо запроса пользователя.

5. @Zabuza это мое лучшее предположение, судя по тому, что у него есть System.out.println в названии.

Ответ №1:

Я бы рекомендовал использовать функцию класса A для получения входных данных один за другим. Затем из класса B выведите строку перед вызовом метода. Как таковой:

 public class A {

    private Scanner scan;

    public A() throws FileNotFoundException {
        scan = new Scanner(System.in);
    }

    public void getInput() {
        System.out.println("Enter #");
        int num = scan.nextInt();
    }

}

public class B {

    public B() {

        A runA = new A();

        for(int i=1;i<=9;i  ) {
            System.out.println("3");
            runA.getInput();  
        }

    }

    public static void main(String[] args) {
        B runB = new B();
    }

}
  

Это должно быть то, что вы хотите.

Либо это, либо вы можете напечатать строку выше, где написано scan.nextInt(); в вашем коде.