Чтение текстового файла с использованием класса scanner и вывод 2 текстовых файлов

#java #arrays #java.util.scanner #java-io #txt

#java #массивы #java.util.scanner #java-io #текст

Вопрос:

Это подсказка, которую мне дали «Написать программу и использовать прикрепленный файл (babynames.txt ) в качестве входного файла и создайте две выходные плитки. В одном файле перечислены все имена мальчиков, а в другом файле перечислены все имена девочек «

Вот что у меня есть до сих пор

 import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;


public class BabyNames
{
public static void main(String[] args) throws FileNotFoundException
{
  // Prompt for the input and output file names

  Scanner console = new Scanner(System.in);
  System.out.println("Input file: ");
  String inputFileName = console.next();
  System.out.println("Output file 1: ");
  String outputBoysNames = console.next();
  System.out.println("Output file 2: ");
  String outputGirlsNames = console.next();

  // Construct the Scanner and PrintWriter objects for reading and writing

  File inputFile = new File(inputFileName); // creates variable that reads from txt
  Scanner in = new Scanner(inputFile);
  PrintWriter out = new PrintWriter(outputBoysNames); // writes to output file (variable name)
  PrintWriter out2 = new PrintWriter(outputGirlsNames);

  // Read the input and write the output

  while (in.hasNextLine()) {
     String A = in.next();
     String B = in.next();
     String C = in.next();
     String D = in.next();
     String E = in.next();
     String F = in.next();
     String G = in.next();

     out.printf(B);
     out2.print(E);
  }

  in.close(); // Prevents this file is being used error
  out.close();
  out2.close();
 }
}
  

Я бы предположил, что мне нужно будет ввести данные из текстового файла в массив. Каждый токен разделяется пробелом. Я не знаю, как подойти к этому. Кроме того, после настройки массива мне нужно будет изменить out.printf() и out2.printf() на цикл if, чтобы поместить нужные токены в соответствующий текстовый файл.

Пример строки из входного текстового файла

1 Michael 462085 2.2506 Jessica 302962 1.5436

Комментарии:

1. Вам не нужен массив, просто записывайте в любой выходной файл во время чтения из входного файла. Как вы должны различать имя мальчика и имя девочки? У вас есть основной список имен, в котором указывается, является ли имя именем для мальчиков или именем для девочек?

2. @JonnyHenly мой учитель указал токены, которые являются именами мальчиков или девочек. Когда я запускаю свой код в данный момент, я получаю сообщение об ошибке. Исключение в потоке «main» java.util.NoSuchElementException в java.base/ java.util. Scanner.throwFor(Scanner.java:937) в java.base/java.util. Scanner.next(Scanner.java: 1478) в BabyNames.main(BabyNames.java: 33) Вот почему я подумал, что мне нужно будет использовать массив.

3. Пожалуйста, отредактируйте свой вопрос и приведите пример строки из входного файла. Я понятия не имею, что находится в каждой строке, и имена переменных, такие как A, B, C, D, E, F и G, мало что проясняют.

4. @VGR Я предоставил строку из текстового файла, извините, это вылетело у меня из головы

5. Таким образом, каждая строка может содержать более одного имени (т.Е. Michael И Jessica )? Также, что означают цифры? Зачем нужны цифры, если вам просто нужно отделить имена мальчиков от имен девочек?