Как я могу читать только строки или целые числа, когда я читаю .txt файл с классом сканера в Java - PullRequest
0 голосов
/ 30 мая 2018

Привет, ребята, это мой первый вопрос, поэтому, если у меня есть какие-либо ошибки или ошибки, я сожалею об этом.

Так что я работаю над одной вещью, которая в настоящее время не работает, а именно, как говорится в заголовке, чтение только строк и целых чисел из файла .txt.Вот мой код:

 File file = new File("C:\\Users\\Enes\\Desktop\\test.txt");
    Scanner scn = new Scanner(file);
    String[] s = new String[10];
    int i = 0;
    int[] fruits = new int[10];

    while (scn.hasNextInt()) {

        fruits[i++] = scn.nextInt();

    }while (scn.hasNext()) {

        s[i++] = scn.next();

    }

    for (int elm : fruits) {
        System.out.print(elm + "\t");
        System.out.println("\n");
    }
    for (String ele : s) {
        System.out.print(ele + "\t");
    }

А вот что пишет в файле .txt

Apple 5
Pear 3

Вывод выглядит так:

0   0   0   0   0   0   0   0   0   0   
Apple   5   Pear    3   null    null    null    null    null    null

Итак, я хочу получитьApple и Pear, строки в разных массивах и 5 и 3, которые являются целыми числами в разных массивах.Как я могу это сделать?Любая помощь будет так ценится.Спасибо всем!

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Это адаптация ответа corsiKa (который сам по себе правильный + 1), но демонстрирует использование второго Scanner для анализа line ...

int index = 0;
while (sc.hasNextLine()) {
    String line = sc.nextLine();
    Scanner lineScanner = new Scanner(line);
    names[index] = lineScanner.next();
    counts[index] = lineScanner.nextInt();
    index++;
}

потому что люди, кажется, забывают, что Scanner может анализировать String значения

0 голосов
/ 30 мая 2018

Сначала я бы переименовал ваши переменные во что-то полезное:

String[] names = new String[10];
int[] counts = new int[10];

Прямо сейчас вы пытаетесь захватить все 10 чисел, а затем все 10 имен.Но это не то, как выкладываются ваши данные.

Я бы использовал сканер, чтобы взять строку и разделить ее оттуда:

Scanner sc = new Scanner(new File(file));
int index = 0;
while(sc.hasNextLine()) {
    String line = sc.nextLine();
    String[] tokens = line.split(" ");
    names[index] = tokens[0];
    counts[index] = Integer.parseInt(tokens[1]);
    index++;
}

Для вывода мы повторяем оба циклаодновременно:

for(int i = 0; i < 10; i++) {
    System.out.println(names[i] + "\t" + counts[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...