Jak mogę używać mojego skanera user_input na wielu klasach? Przeczytałem kilka artykułów, ale najwyraźniej coś brakuje. Próbowałem nawet śledzić kilka innych pytań stackoverflow, a wynik jest poniżej:

import java.util.Scanner;

public class HelloWorld{
    public static final Scanner user_input = new Scanner(System.in);

    public static void main(String []args){
        String test1 = user_input.next();
        System.out.println("Test 1: " + test1);
    }
}

class TestClass{
    public static void test_method(){
        String test2 = HelloWord.user_input.next();
        System.out.println("Test 2: " + test2);
    }
}

Jeśli ktoś może mi pomóc, naprawdę doceniłbym to.

Str.s. Jestem nowy w Javie, mieć tło w Pythonie.

0
K. Kretz 20 luty 2019, 19:59

2 odpowiedzi

Najlepsza odpowiedź

Twoim jedynym problemem jest, że przegapiłeś napisany świat w swojej drugiej klasie.

Więc zmień:

String test2 = HelloWord.user_input.next();

Do:

String test2 = HelloWorld.user_input.next();

I powinno działać

1
Damian Willmer 20 luty 2019, 17:20

Z komentarza @ferdz, coś takiego byłoby lepiej:

import java.util.Scanner;

public class HelloWorld {
    public static final Scanner user_input = new Scanner(System.in);

    public static void main(String[] args) {
        String test1 = user_input.next();
        System.out.println("Test 1: " + test1);

        // These two lines actually instantiate the TestClass below,
        // we pass in the Scanner as a parameter (user_input), and 
        // then it gets used in the test_method internally.
        TestClass testClass = new TestClass(user_input);
        testClass.test_method();
    }

    private static class TestClass {
        public void test_method(Scanner scanner) {
            String test2 = scanner.next();
            System.out.println("Test 2: " + test2);
        }
    }
}
4
mjuarez 20 luty 2019, 17:15