如何从左到右打印文本文件,然后颠倒?

时间:2017-03-15 20:17:04

标签: java

我的这个程序的目标是读取文本文件,正常打印,然后从左向右打印,然后翻转翻转。我可以打印原件,但是我不确定如何读取文件,因此它将以其他两种格式打印,以及如何以这些格式打印。我只能导入一次文件。

Here is an example output, if my description is inadequate.

enter image description here

现在的代码:

import java.io.*;
import java.util.*;
public class Problem2
{
    public static void main(String[] args) throws IOException
    {
        File marge = new File("marge.txt");
        Scanner fileScan = new Scanner(marge);
        String original;
        while (fileScan.hasNext())
        {
            original = fileScan.nextLine();
            System.out.println(original);
        }  
        String lefttoright;
        while (fileScan.hasNext())
        {
            lefttoright = fileScan.nextLine();
            System.out.println(lefttoright);
        }
        String upsidedown;
        while (fileScan.hasNext())
        {
            upsidedown = fileScan.nextLine();
            System.out.println(upsidedown);
        }  
        fileScan.close();
    }
}

3 个答案:

答案 0 :(得分:2)

尝试使用StringBuilder(element).reverse().toString(); element为字符串。

工作代码示例:

package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class test {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub

        File file = new File("C:\\Users\\xxx\\Documents\\test.txt");

        List<String> listString = new ArrayList<>();

        BufferedReader br = new BufferedReader(new FileReader(file));
        String line;

        //write as is
        while ((line = br.readLine()) != null) {            
            System.out.println(line);
        }

        System.out.println("");

        br = new BufferedReader(new FileReader(file));

        //write in reverse
        while ((line = br.readLine()) != null) {
            String result = new StringBuilder(line).reverse().toString();

            System.out.println(result);
        }

        System.out.println("");

        br = new BufferedReader(new FileReader(file));

        while ((line = br.readLine()) != null) {
            listString.add(line);
        }

        //write down up
        Collections.reverse(listString);
        for (String element : listString) {
            String result = new StringBuilder(element).reverse().toString();
            System.out.println(result);
        }


    }

}

测试示例:

test.txt文件内容:

alpha
tree
123

<强>输出:

  

阿尔法

     

     

123

ahpla

eert

321
  

321

     

eert

     

ahpla

答案 1 :(得分:2)

您可以考虑如下。这样可以省去阅读文件3次的麻烦。

import java.io.*;
import java.util.*;

public class Problem2 {
    public static void main(String[] args) throws IOException {

        File marge = new File("marge.txt");
        Scanner fileScan = new Scanner(marge);
        String original;

        while (fileScan.hasNext()) {
            original = fileScan.nextLine();
            System.out.println(original);
        }
        System.out.println(original);
        System.out.println();
        System.out.print(flip(original));

        System.out.println();
        System.out.print(updsideDown(original));
    }

    public static String flip(String input) {
        StringBuffer output = new StringBuffer();

        String[] intermInput = input.split("\n");
        for (int i = 0; i < intermInput.length; i++) {

            StringBuffer strBuff = new StringBuffer(intermInput[i]);
            output.append(strBuff.reverse());
            output.append("\n");
        }

        output.substring(0, output.length());

        return output.toString();

    }

    public static String updsideDown(String input) {
        StringBuffer output = new StringBuffer();

        String[] intermInput = input.split("\n");

        for (int i = intermInput.length - 1; i >= 0; i--) {

            output.append(intermInput[i]);
            output.append("\n");
        }
        output.substring(0, output.length());

        return output.toString();

    }

}

答案 2 :(得分:1)

使用YCF_L的建议或使用以下解决方案。

import java.io.*;
import java.util.*;

public class Problem2 {
    public static void main(String[] args) throws IOException {
        File marge = new File("marge.txt");
        Scanner fileScan = new Scanner(marge);
        String original;
        while (fileScan.hasNext()) {
            original = fileScan.nextLine();
            System.out.println(original);
        }
        fileScan = new Scanner(marge);
        String lefttoright;
        while (fileScan.hasNext()) {
            lefttoright = fileScan.nextLine();
            StringBuffer sb = new StringBuffer(lefttoright);
            System.out.println(sb.reverse());
        }
        fileScan = new Scanner(marge);
        String upsidedown;
        Stack<String> list = new Stack<String>();
        while (fileScan.hasNext()) {
            upsidedown = fileScan.nextLine();
            list.push(upsidedown);
        }
        for (int i = 0; i <= list.size(); i++) {
            System.out.println(list.pop());
        }

        fileScan.close();
    }
}