Java посимвольный вывод, запись в файл

159
23 апреля 2019, 21:40
import java.util.Scanner;
import java.io.*;
public class Main {
    public static void main(String[] args) {
        char x;
        System.out.println("Введите слово: ");
        Scanner reader = new Scanner(System.in);
        x = reader.nextLine().trim().charAt(0);
        System.out.println("=======================");
        System.out.println("Буква: '" + x + "'");
        System.out.println("Десятичный код: " + Integer.toString(x));
        System.out.println("Двоичный код: " + Integer.toBinaryString(x));
        System.out.println("Восьмеричный код: " + Integer.toOctalString(x));
        try {
            FileWriter recorder = new FileWriter("text.txt");
            recorder.write(x);
            recorder.close();
        } catch (IOException ex){
            ex.printStackTrace();
        }
    }
}

Как после ввода слова, вывести в консоль все буквы а не только первую? С применением forEach не получиться решить второй вопрос по моему.
̶К̶а̶к̶ ̶з̶а̶п̶и̶с̶а̶т̶ь̶ ̶в̶с̶е̶ ̶п̶о̶л̶у̶ч̶е̶н̶н̶ы̶е̶ ̶д̶а̶н̶н̶ы̶е̶ ̶в̶ ̶ф̶а̶й̶л̶?̶ ̶А̶ ̶н̶е̶ ̶в̶в̶е̶д̶е̶н̶н̶у̶ю̶ ̶п̶е̶р̶в̶у̶ю̶ ̶б̶у̶к̶в̶у̶ ̶и̶з̶ ̶с̶л̶о̶в̶а̶.̶ Желательно что бы запись происходила по команде. Пример: ввел "-o" записал данные в файл.

Answer 1

Пройтись циклом по строке можно с помощью String.toCharArray:

//объявим recorder перед циклом
//обернем его в try, так он закроется по завершении блока без recorder.close
try(FileWriter recorder = new FileWriter("text.txt")) {
    String line = reader.nextLine().trim();
    for(char x : line.toCharArray()) {
        //выводим в консоль
        System.out.println("Буква: '" + x + "'");
        //...
        //выводим в файл
        recorder.write(x);
    }
} catch (IOException ex){
    ex.printStackTrace();
}

Судя по Вашему комментарию, формат вывода данных в консоль и в файл отличаются, поэтому писать нужно будет раздельно. Если нужно писать ровно одно и то же как в файл, так и в консоль, то можно написать для этого метод:

private static void writeToFileAndConsole(FileWriter writer, String line) throws IOException{
    System.out.println(line);
    writer.write(line);
    writer.write(System.getProperty( "line.separator" ));
}

И везде использовать его:

writeToFileAndConsole(recorder, "Буква: '" + x + "'");

Вместо FileWriter можно использовать PrintStream или PrintWriter, которые содержат готовые методы для вывода строки.

Желательно что бы запись происходила по команде. Пример: ввел "-o" записал данные в файл.

Для этого нужно читать ввод, проверять его и в зависимости от него выводить в файл. В любом случае это уже другой вопрос.

READ ALSO
Точность распознавания лиц с помощью Javacv

Точность распознавания лиц с помощью Javacv

Я новичок в javacvПробую создать систему распознавания лиц и столкнулся с проблемой низкой точности распознавания

123
JaperReports. Вычисление параметров для отчета по иерархии географических адресов

JaperReports. Вычисление параметров для отчета по иерархии географических адресов

Возникла необходимость реализации следующего отчета на JasperНа вход пользователю необходимо предложить выбрать один или несколько адресных...

159
Вопрос по строкам в Java

Вопрос по строкам в Java

Пример кода:

161