我很抱歉使用Java,
我有以下问题:
我想访问8个txt文件并使用每个文件中相同的点构建一个数组;例如,
输出(1,1)= [file1(point(1,1),file2(point(1,1),file3(point(1,1),file4(point(1,1),file5(point) (1,1),file6(point(1,1),file7(point(1,1),file8(point(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 :(得分:1)
我认为你背后的原因是&#34; 0.0&#34;所有的时间都是你使用
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语句。