Разделение слов из строки во входном текстовом файле и печать его для вывода текстового файла построчно в Java

Эй, у меня есть этот код, который печатает всю строку из текстового файла в другой текстовый файл, строка за строкой. Это работает отлично, но я боюсь, что мы ограничены в использовании .isEmpty(). Есть ли какое-либо другое условие для второго оператора while, кроме .isEmpty()? например, подсчет размера строки и уменьшение его на размер слова в каждом цикле? Я пробовал line.length > 0, объявлял int size = line.length() - 1 и уменьшал размер на size -= word.length(); но у меня все еще есть ошибки с бесконечным циклом.

Вот мой код,

import java.io.*;

class fileStr{
    public static void main(String args[]){
        try{
            BufferedReader rw = new BufferedReader(new FileReader("inStr.txt"));
            PrintWriter sw = new PrintWriter(new FileOutputStream("outStr.txt"));
            String line = rw.readLine();
            while(line!=null){
                String word = line.substring(0,line.indexOf(" "));
                while(!word.isEmpty()){
                    sw.println(word);
                    line = line.substring(line.indexOf(" ") + 1) + " ";
                    word = line.substring(0,line.indexOf(" "));
                }
                line = rw.readLine();
            }
            rw.close();
            sw.close();
        }catch(Exception e){
            System.out.println("\n\tFILE NOT FOUND!");
        }
    }
}

Пожалуйста, помогите, спасибо.


person patmarley    schedule 15.09.2014    source источник
comment
Почему подсчет длины слова (word.length() > 0) не то же самое, что word.isEmpty()? Вы можете попробовать word.trim().isEmpty() удалить все начальные или конечные пробелы...   -  person MadProgrammer    schedule 15.09.2014


Ответы (1)


Согласно документам isEmpty() возвращает true тогда и только тогда, когда длина строки равна нулю. Вы можете легко выполнить ту же самую проверку без использования isEmpty():

while(word.length() > 0){
    ....

Что касается неудачных попыток использовать length() - чтобы помочь вам в этом, вы должны опубликовать некоторые недостающие детали, такие как содержимое файла, который вы читаете, и на какой строке он терпит неудачу.

person Nir Alfasi    schedule 15.09.2014
comment
Спасибо! У меня получился бесконечный цикл, потому что я попробовал line.length() › 0 вместо word.length() › 0. Я этого не заметил, думаю, мне нужно немного отдохнуть. ржунимагу - person patmarley; 15.09.2014