java - BufferReader程序逐行倒序打印输入文件(文本文件),但它也倒序打印单词

标签 java

public static void main(String[] args) {
    BufferedReader br = null;
    try {
        br = new BufferedReader(new FileReader("C://Users/ALAN/Desktop/mary.txt"));
        String lines = br.readLine();
        ArrayList<String> buffer = new ArrayList<String>();
        while (lines != null) {
            if (lines != null) {
                buffer.add("\n");
                StringBuilder str = new StringBuilder();
                String[] splitStr = lines.split(" ");
                for (int i = splitStr.length; i > 0; i--) {
                    str.append(splitStr[i - 1]).append(" ");
                }
                buffer.add(str.toString());
            }
            lines = br.readLine();
        }
        for(int i = buffer.size() - 1; i > 0; i--) {
            System.out.print(buffer.get(i));
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null) br.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

如何让我的程序逐行反向打印我的文本文件,但不让它反转单词。

例如,我有一个输出:

reply. did teacher the 23 
know." you lamb, the loves Mary "Why, 22 
21 
cry. children eager the 20 

代替

23 the teacher did reply.
22 "Why, Mary loves the lamb, you know."
21
20 the eager children cry.

最佳答案

这从 splitStr.length 到 1 降序计数:

for (int i = splitStr.length; i > 0; i--) {
    str.append(splitStr[i - 1]).append(" ");
}

因此,您正在以相反的顺序迭代 splitStr 数组。

下面的代码将以新月(非反向)顺序迭代,从 0 计数到小于 splitStr.length:

for (int i = 0; i < splitStr.length; i++) {
    str.append(splitStr[i]).append(" ");
}

或者你可以简单地写:

for (String element : splitStr) {
    str.append(element).append(" ");
}

同样适用于循环迭代buffer:

for (int i = buffer.size() - 1; i > 0; i--) {
    System.out.print(buffer.get(i));
}

关于java - BufferReader程序逐行倒序打印输入文件(文本文件),但它也倒序打印单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655194/

相关文章:

java - Libgdx file.internal 文件未找到错误

java - 压缩 HTTP 响应?可能的?

java - 在 Java 中,如何将十进制数转换为基数 36?

java - 映射到 com.vividsolutions.jts.geom.Point 无效的字节序标志

java - 无法解析 TabHost 方法上的符号 android

java - Sikuli 抛出异常 org.sikuli.api.robot.desktop.DesktopScreen.getSize

java - 在 Java 中通过较小的修改替换字符串模式

java - 为什么我得到 "java.lang.NoClassDefFoundError: kong/unirest/Unirest"?

java - 有没有一种快速的方法可以将 Java xml 对象转换为 Scala xml 对象?

java - Android 根据大小分多个步骤加载字符串