使用 Scanner Java 读取和写入 TXT


我很

抱歉使用Java的菜鸟,

我有以下问题:

我想访问 8 个 txt 文件,并用每个文件的相同点构建一个数组;例如,

输出(1,1)=[文件1(点(1,1), 文件2(点(1,1), 文件3(点(1,1),文件4(点(1,1), 文件5(点(1,1),文件6(点(1,1),文件7(点(1,1

),文件8(点(1,1)]

于是,

现在我有以下问题...首先,代码没有访问文件,一直给出 0.0、0.0、0.0、....0.0. 其次,我不知道如何创建输出(x,y).txt

每个文件输入有 1.050.622 点...所以需要创建 1.050.622 输出...

有人可以帮助我吗?

这是我写的代码:

package filtros;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
private static final String INPUT_FILE  = "";
private static final String OUTPUT_FILE = "";
public static void main(String[] args) {
     int n=1050622;
     float datos[][] = new float[n][8];


    Scanner sc1,sc2,sc3,sc4,sc5,sc6,sc7,sc8;
    try {
        sc1 = new Scanner(new File("C:\Users\Netbook\f1.txt"));
        sc2 = new Scanner(new File("C:\Users\Netbook\f2.txt"));
        sc3 = new Scanner(new File("C:\Users\Netbook\f3.txt"));
        sc4 = new Scanner(new File("C:\Users\Netbook\f4.txt"));
        sc5 = new Scanner(new File("C:\Users\Netbook\f5.txt"));
        sc6 = new Scanner(new File("C:\Users\Netbook\f6.txt"));
        sc7 = new Scanner(new File("C:\Users\Netbook\f7.txt"));
        sc8 = new Scanner(new File("C:\Users\Netbook\f8.txt"));

        for(int i=0;i<n;i++){
            while (sc1.hasNextFloat()) {
                datos[i][0] = sc1.nextFloat();
            }
            while (sc2.hasNextFloat()) {
                datos[i][1] = sc2.nextFloat();
            }
            while (sc3.hasNextFloat()) {
                datos[i][2] = sc3.nextFloat();
            }
            while (sc4.hasNextFloat()) {
                datos[i][3] = sc4.nextFloat();                
            }
            while (sc5.hasNextFloat()) {
                datos[i][4] = sc5.nextFloat();                
            }
            while (sc6.hasNextFloat()) {
                datos[i][5] = sc6.nextFloat();                
            }
            while (sc7.hasNextFloat()) {
                datos[i][6] = sc7.nextFloat();                
            }
            while (sc8.hasNextFloat()) {
                datos[i][7] = sc8.nextFloat();                
            }
        }
        for(int i=0;i<n;i++){
            System.out.print("espectro "+ i+ " ");
            for(int j=0;j<8;j++){
                System.out.print(datos[i][j] + " ");
                //float datos[i] = new FileWriter("C:\Users\Netbook\Exits");
            }
            System.out.println();
        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

我认为你一直得到"0.0"背后的原因是你使用

while (sc1.hasNextFloat())

这使您在 for 循环的第一次迭代期间读取每个文件中的所有浮点数。如果使用if而不是while则应获得所需的行为。

至于编写文件,我建议使用FileWriter,代码看起来像这样:

FileWriter fw;
for(int i=0;i<n;i++){
    fw = new FileWriter(new File("C:\Users\Netbook\Exits\output" + i + ".txt"));
    for(int j=0;j<8;j++){
        fw.write(datos[i][j] + " ");
    }
    fw.flush();
    fw.close();
}

另外,请记住为可能的IOException添加 catch 语句。

最新更新