Java 算法在每个 x 行选项卡之后排序到新列

Java algorithm sort after every x line tab to new column

我有一个包含 400 行的 a.txt 文件,我需要将序列中的每第 100 行分成一个新列,因此我将有 4 列,每列 100 行。

我想要的序列是这样的:1->101->201->301 下一行:2->102->202-> 等等... 相反,我得到 1->2->3->4 下一行:5->6->7->8

y 表示我同时工作的另一个序列,我希望每 6 行读取一次 space。

到目前为止,这是我的代码:

    int x = 0;
    int y = 0;
    int z = 0;      

    int xfinal = 100;
    int yfinal = 6;
    int zfinal = 4;
    int fim= (xfinal*zfinal)+1;

    PrintWriter output = new PrintWriter("C:\path\file.txt");

    try {
        for (x = 0; x < xfinal; x++){
          for (y = 0; y < yfinal; y++){
            for (z = 0; z < zfinal; z++) {

                    int pos = (zfinal * yfinal) * x + (zfinal * y) + z;
                    if (pos >= fim) {
                        output.print("\t");
                        continue;
                    }
                    output.print(lines.get(pos) + "\t");
             }
                output.print("\r\n");
          }
            output.print("\r\n");
        }    
    } catch(Exception e) {
        e.printStackTrace();
    }

由于我是 java.

的新手,所以我已经解决这个问题很长时间了,无法理解如何正确排序

据我了解你的问题尝试使用这样的 if 语句:

for (int x=0; x<xfinal; x++){
        if(x%100==0){
        output.print("\n");
    }
}

这样每循环 100 x 就会换行, 您可以每 6 行使用制表符执行类似操作。

您将需要这样的东西(假设 lines 是包含所有 a.txt 行的数组):

    //read file a.txt into the array lines
    String lines[] = raedFileIntoArray("a.txt");

    int numberOfLines = lines.length;
    int numberOfCols = 4;

    int maxNumOfLines = numberOfLines / numberOfCols;

    for (int row = 0; row < maxNumOfLines; ++row) {
        for (int col = 0; col < numberOfCols; ++col) {
            System.out.print(lines[maxNumOfLines * col + row]);
            if (col + 1 < numberOfCols)
                  System.out.print("\t");
        }
        System.out.print("\n");
    }