Добавление элементов из текстового файла в массив

Привет, я только начал учиться программировать. Я использую netbeans и хочу передать некоторые данные из txt.file в массив в java. Это может быть очень простое исправление, но я просто не вижу, что не так

Это данные в файле txt.file:

58_hello_sad_happy
685_dhejdho_sahdfihsf_hasfi
544654_fhokdf_dasfjisod_fhdihds

Это код, который я использую, но что-то не так с последней строкой кода:

int points = 0;
String name = "";
String a = "";
String b = "";

public void ReadFiles() throws FileNotFoundException{
    try (Scanner input = new Scanner(new File("questions.txt"))) {
        String data;
        while(input.hasNextLine()){
            data = input.nextLine();
            String[] Questions = data.split("_");
            points = Integer.parseInt(Questions[0]);
            name= Questions[1];
            a = Questions[2];
            b = Questions[3];
        }   
        System.out.println(Arrays.toString(Questions));
    }
}

Я получаю вот такую ​​ошибку:

 error: cannot find symbol 
 System.out.println(Arrays.toString(Questions));

Спасибо, ребята.

Вы объявили Questions только в рамках цикла while. Объявите это вне цикла. Также соглашения об именах Java предназначены для переменных, которые должны начинаться с нижнего регистра.

GBlodgett 09.08.2018 23:47

Т.е. измените свой код на: String[] Questions; while(input.hasNextLine()){, а затем вы можете просто сделать: Questions = data.split("_");

GBlodgett 09.08.2018 23:48

Это может быть полезно прочитать: geeksforgeeks.org/variable-scope-in-java

GBlodgett 09.08.2018 23:52
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы также можете использовать приведенный ниже код, если хотите просто распечатать данные:

    Files.readAllLines(Paths.get("questions.txt")).forEach(line -> {
        System.out.println(Arrays.toString(line.split("_")));
    });

Выход:

[58, hello, sad, happy]
[685, dhejdho, sahdfihsf, hasfi]
[544654, fhokdf, dasfjisod, fhdihds]

Правильная версия вашего кода должна быть такой, как показано ниже (вы должны получить доступ к переменной Question в объявленной области, переместив println в конец цикла while):

// definitions...

public void ReadFiles() throws FileNotFoundException{
    try (Scanner input = new Scanner(new File("questions.txt"))) {
        String data;
        while(input.hasNextLine()){
            data = input.nextLine();
            String[] Questions = data.split("_");
            points = Integer.parseInt(Questions[0]);
            name= Questions[1];
            a = Questions[2];
            b = Questions[3];
            System.out.println(Arrays.toString(Questions));
        }   
    }
}

Другие вопросы по теме