使用scanner java读写txt

时间:2016-07-07 14:10:17

标签: java java.util.scanner

我很抱歉使用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();
    }


}

}

1 个答案:

答案 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语句。