抱歉使用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 语句。