Проблемы со Scanner'ом в Java

287
13 марта 2022, 03:30
package z_1;
import java.util.*;
import java.io.*;
public class Z_1 {
    public static void main(String[] args) throws IOException {
        File fileIn = new File("in.txt");
        File fileOut = new File("out.txt");
        Scanner in = new Scanner(System.in);
        Scanner fin = new Scanner(fileIn);
        String str;
        while (true) {
            System.out.print("Введите команду (1 - ввод данных, 2 - просмотр данных, 3 - программа завершает работу): ");
            int a = in.nextInt();
            switch (a) {
                case 1:
                    PrintWriter fout1 = new PrintWriter(fileIn);
                    System.out.print("Введите последовательность: ");
                    while (in.hasNextInt()) {
                        int b = in.nextInt();
                        fout1.print(b + " ");
                    }
                    str = in.next();
                    fout1.close();
                    break;
                case 2:
                    if (!fileIn.exists()) {
                        System.out.println("Такого файла не существует");
                    }
                    int num;
                    while (fin.hasNextInt()) {
                        num = fin.nextInt();
                        System.out.print(num + " ");
                    }
                    System.out.print("\n");
                    break;
                case 3:
                    System.exit(0);
                    break;            
             }
        }
    }  
}

После ввода данных файл (case 1) хочу вывести на экран цифры содержащиеся в нём(case 2), первый раз получается это сделать, а вот второй уже нет, в чём проблема?

Answer 1

Определите сканер fin внутри блока 'case 2' и закрывайте его после каждого прочтения данных из файла.

                case 2:
                Scanner fin = new Scanner(fileIn); // <--
                if (!fileIn.exists()) {
                    System.out.println("Такого файла не существует");
                }
                int num;
                while (fin.hasNextInt()) {
                    num = fin.nextInt();
                    System.out.print(num + " ");
                }
                System.out.print("\n");
                fin.close(); // <--
                break;
READ ALSO
как после прочтения текстового файла в webView занести информацию в sqlite андройд

как после прочтения текстового файла в webView занести информацию в sqlite андройд

у меня есть файл txt в первичной внешней памяти(не съемной)андройдая вывожу текст в webView как мне его положить в базу данных sqlite? пишут что то про...

173
Реализация сервера на Java

Реализация сервера на Java

У меня есть приложение на Java, которое реализует многопоточный локальный сервер и также умеет брать значения из базы данных MySQL(также локальной)Вопрос...

207
Java. Массив строк. Найти самое длинное слово

Java. Массив строк. Найти самое длинное слово

JavaНайти самое длинное общее слово двух заданных предложений

124