2

这是我读取 txt 文件的代码,但我似乎无法正确安排文件内容的输出。

这是文件内容:

venti lador 13 男款taguig

Pito dingal 26 雄性 pateros

多尼·马丁内斯 24 男 hagonoy

package testprojects;

import java.io.BufferedReader;
import java.io.FileReader;

public class ReadTextFile {
    public static void main(String args[]) throws Exception {
        BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));
        String line;

        while ((line = bf.readLine()) != null) {
            String[] value = line.split(" ");

            for (int x = 0; x < value.length; x++) {
                if (x >= 5) {
                    System.out.println();
                }
                System.out.print(value[x] + " ");
            }
        }
    }
}

输出:

venti lador 13 男 taguig Pito dingal 26 男 pateros dony martinez 24 男 hagonoy

期望的输出:

venti lador 13 男款taguig

Pito dingal 26 雄性 pateros

多尼·马丁内斯 24 男 hagonoy

4

2 回答 2

3

将您的条件更改为

if((x + 1) % 5 == 0 || (x == value.length - 1))

这样它将在每 5 个数据处跳过一行,或者如果您到达行的最后一个数据。

你会有这样的东西:

System.out.print(value[x] + " " );
if((x + 1) % 5 == 0 || (x == value.length - 1))
    System.out.println();
于 2015-04-21T16:09:44.683 回答
1

您不需要 if 语句来换行,只需将您的 println() 放在 for 循环之后。

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;

    while((line=bf.readLine())!=null){
        String[] value=line.split(" ");

        for (String value1 : value) {
            System.out.print(value1 + " ");
        }
        System.out.println(""); // Goes to the next line after printing all values
    }
}

如果您希望每行有一定数量的值(例如 5 个),请尝试以下操作:

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;

    int count = 0;
    while((line=bf.readLine())!=null){
        String[] value=line.split(" ");

        for (String value1 : value) {
            System.out.print(value1 + " ");
            count++;

            if (count == 5) { // Five values per line before a line break
                System.out.println("");
                count = 0;
            }
        }
    }
}

如果您只是打印文件中的内容,我不明白为什么必须执行拆分。您在一个空格上拆分,然后将值打印回来,每个值之间有一个空格。只需打印从文件中读取的行。

public static void main(String[] args) throws Exception {    
    BufferedReader bf = new BufferedReader(new FileReader("C://Users/PAO/Desktop/sampletxt.txt"));

    String line;
    while((line=bf.readLine())!=null){
        System.out.println(line);
    }
}
于 2015-04-21T16:13:08.473 回答