0

こんにちは、パス C:/Users/Marc/Downloads/vector25 にテキスト ファイルがあります。このファイルには、次の形式のコンマ区切りの値が含まれています。

-6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84, -51.53,77.95,88.37,26.14,-23.58,-18.4,-4.62,46.52,-19.47,17.54, 85.33,52.53,27.97,10.73,-5.82,

このテキスト ファイルを読み取って、それらの double を配列に格納する方法を教えてください。

私は現在、バッファリングされたリーダーを試してみることを考えていますが、これまでのところ答えはわかりません。誰かが私を正しい方向に向けることができますか?

    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Scanner;
    public class subvector {

public static void main(String[] args){

    FileReader file = null;
    try {
        file = new FileReader("C:/Users/Marc/Downloads/vector25");
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    ArrayList<Double> list = new ArrayList<Double>();
    int i=0;
    try {
        Scanner input = new Scanner(file);
        while(input.hasNext())
        {
           list.add(input.nextDouble());
           i++;
        }
        input.close();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
   for(double k:list){
       System.out.println(k);

   }
}
4

3 に答える 3

0

あなたのコードスニペットは、指定されたデータ、つまり -6.08,70.93,-9.35,-86.09,-28.41,27.94,75.15,91.03,-84.21,97.84, -51.53,77.95,88.37,26.14,-23.58,- には対応していないと思います。 18.4、-4.62、46.52、-19.47、17.54、85.33、52.53、27.97、10.73、-5.82、

しかし、あなたのプログラムはこれらのタイプのデータでうまく動作します:

19.60
63.0
635.00
896.63
47.25

私はあなたのプログラムを修正し、あなたのデータでもテストしました。期待どおりに動作しています。

public static void main(String[] args) {
    FileReader file = null;
    try {
        file = new FileReader("D:\\log4j\\vector25.txt");
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    ArrayList<Double> list = new ArrayList<Double>();
    int i=0;
    Double d= null;
    try {
        BufferedReader input = new BufferedReader(file);
        String s=null;
        while((s=input.readLine())!=null) {
            StringTokenizer st = new StringTokenizer(s,",");
            while(st.hasMoreTokens()) {
            try {
                d = Double.parseDouble(st.nextToken());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            list.add(i, d);
        }
    }
    input.close();
} catch(Exception e) {
    e.printStackTrace();
}
for(double k:list) {
    System.out.println(k);
}
}

それを確認して、何か更新した場合はお知らせください。

これは、stackoverflow での最初の POST です。

ありがとう、プラサド

于 2013-09-23T12:29:51.930 に答える