Чтение значения int из текстового файла и использование значения для изменения содержимого файла в отдельный текстовый файл. (Java) - PullRequest
0 голосов
/ 27 февраля 2019

Итак, я пытаюсь прочитать ввод из текстового файла, сохранить его в переменных, а затем вывести измененную версию этого текста в другой файл, используя переменную из файла.Я использую Filereader, Scanner и Printwriter, чтобы сделать это.Я должен сохранить последнюю строку (это число) из этого текстового документа и использовать это число, чтобы умножить текстовое тело на другой файл, не включая число.

Таким образом, текст: Исходный текст файла

И вывод ПРЕДПОЛАГАЕТСЯ быть: желаемый вывод

Я могу получить число и сохранить его в моей переменной множителя иизвлеките текст в мою строку, НО он сохраняется в виде одной строки, если я проверим внутри консоли: как хранится текст, видимый через консоль

, поэтому он выводит вот так в новом файле: нежелательный вывод

Я довольно новичок в Java, извините, если есть вопросы, на которые я не могу ответить, которые могут помочь решить любые проблемы с моим кодом.

Я попытался добавить +"\n" в строку вывода файла, но без кубиков.Я также попытался добавить его в words + = keys.nextLine () +"\n", и он разделяет строки в CONSOLE, но, к сожалению, не в самом файле.Я хотя бы на правильном пути?

Вот мой код:

public class fileRead {
public static void main(String[] args) throws IOException{
    String words = "" ; //Stores the text from file
    int multiplier = 1; // Stores the number

    FileReader fr = new FileReader("hw3q3.txt");
    Scanner keys = new Scanner(fr);

    //while loop returns true if there is another line of text will repeat and store lines of text until the last line which is an int
    while(keys.hasNextLine())
        if (keys.hasNextInt()) { //validation that will read lines until it see's an integer and stores that number
            multiplier = keys.nextInt(); //Stores the number from text
        } else {
            words += keys.nextLine();//Stores the lines of text
            keys.nextLine();
        }
    keys.close();
    PrintWriter outputFile =  new PrintWriter("hw3q3x3.txt");
    for(int i = 1; i <= multiplier; i++) {
        outputFile.println(words);

    }
    outputFile.close();
    System.out.println("Data Written");
    System.out.println(multiplier);//just to see if it read the number
    System.out.println(words); //too see what was stored in 'words'
}

}

1 Ответ

0 голосов
/ 27 февраля 2019

См. Оператор if ниже:

words += keys.nextLine(); //Stores the lines of text
if(words.endsWith(words.substring(words.lastIndexOf(" ")+1))) { //detect last word in sentence 
        words += '\n'; //after last word, append newline
}

...

for(int i = 1; i <= multiplier; i++) {
        outputFile.print(words); //change this to print instead of println
}

По сути, после последнего слова в предложении в файле мы хотим добавить символ новой строки, чтобы начать писать следующее предложение с новой строки.

Приведенный выше оператор if обнаруживает конец предложения, определяя последнее слово в строке words, а затем добавляя символ новой строки в строку words.Это приведет к ожидаемому результату.

Разбивка для вас выражения:

words.substring(words.lastIndexOf(" ")+1)

Возвращает часть строки (substring), которая находится в индексепоследний пробел в строке плюс 1 (lastIndexOf(" ") + 1) - т.е. мы получаем слово после последнего пробела, поэтому последнее слово.

Весь цикл while:

while(keys.hasNextLine()) {
    if (keys.hasNextInt()) { //validation that will read lines until it see's an integer and stores that number
        multiplier = keys.nextInt(); //Stores the number from text
    } else {
        words += keys.nextLine();//Stores the lines of text
        if(words.endsWith(words.substring(words.lastIndexOf(" ")+1))) {
            words += '\n';
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...