Можно ли использовать сканер вне основного метода и при этом вызывать его? - PullRequest
1 голос
/ 24 марта 2020

Итак, что я пытаюсь сделать, это использовать мой метод сканера, чтобы go сохранить входные данные, которые пользователи вводят в них, для l oop, но как мне вызвать определенный тип ввода, в который они помещают? Под этим я подразумеваю, скажем, пользователь помещает входные данные 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 в качестве входных данных для метода вопроса и метода ответа. В основном методе, или любом другом методе, как я могу вызвать на входе 10 или 12.

package com.ez.ez;
import java.util.Scanner;
public class ReWrittingBetterCode{
        public static void Questions(){
        for (int i = 1; i <= 10; i++) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a question "+i+"/10");
        String firstQuestion = scanner.nextLine();
        }
    }
    public static void Answer() {
        for (int i = 1; i <= 10; i++) {
        Scanner scanner = new Scanner(System.in); 
        System.out.println("Enter a answer "+i+"/10");
        String answerAnswer = scanner.nextLine();
        }

    }

    public static void main (String[] args) {
        Questions();
        Answer();

    } 
}

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вам нужно выделить массив для хранения вопросов. Затем, когда вы запрашиваете ответы, вы можете повторить вопросы. Чтобы быть совместимым с вашими циклами, вы должны иметь одну переменную с именем noq или что-то еще для количества вопросов и использовать ее везде, где вы используете циклы.

static int noq = 10;
static String[] questions = new String[noq];
static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    Questions();
    Answer();

}

public static void Questions() {
    for (int i = 1; i <= noq; i++) {
        System.out.println("Enter a question " + i + "/" + noq);
        String firstQuestion = scanner.nextLine();
        questions[i - 1] = firstQuestion;
    }
}

public static void Answer() {
    for (int i = 1; i <= noq; i++) {
        System.out.println(questions[i - 1]);
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a answer " + i + "/" + noq);
        String answerAnswer = scanner.nextLine();
    }
}

Вам также следует избегать использования Стати c везде. Я должен был сделать это, чтобы упростить пример. Ознакомьтесь с Java Tutorials для получения дополнительной информации о программировании в Java с упором на массивы и использовании ключевого слова static.

0 голосов
/ 24 марта 2020

Учитывайте следующие моменты:

A. Следуйте Java соглашению о присвоении имен например, имя ваших методов должно быть questions (не Questions) и answer (не Answer).

B. Вы можете передать Scanner и массив в методы, например

import java.util.Arrays;
import java.util.Scanner;

public class ReWrittingBetterCode {
    public static void questions(Scanner in, int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print("Enter question " + (i + 1) + " of " + arr.length + ": ");
            arr[i] = in.nextInt();
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] arr = new int[3];
        questions(in, arr);
        System.out.println("Your inputs: " + Arrays.toString(arr));
    }
}

Пример прогона:

Enter question 1 of 3: 10
Enter question 2 of 3: 20
Enter question 3 of 3: 30
Your inputs: [10, 20, 30]

C. Вы не должны создавать Scanner внутри al oop.

Я считаю, что с этими подсказки, вы должны быть в состоянии выполнить свое задание. Не стесняйтесь комментировать в случае каких-либо сомнений / проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...