0

ファイル内のテキストで配列を宣言するのに苦労しています。つまり、ファイルの情報を double[] として配列に格納し、拡張された for ループで配列を表示しようとしています。ファイルには 12 個の 10 進数が含まれています。どんな助けでも大歓迎です。以下は私のコードのスニペットです:

 // create inFile2 variable
    Scanner inFile2 = new Scanner("/Users/timothylee/KeyWestHumid.txt");

    // while statment for inFile2
    while(inFile2.hasNext()){

        // create double reader
        double num2 = inFile2.nextDouble();

        double[] humidity1 = new double[num2];

        // for-each loop for displaying humidity
        for(double humidity : humidity1){

            // display array for humidity
        }
    }
4

3 に答える 3

0
Scanner s = new Scanner(new File("C:\\usr\\a.txt"));
double[] darray = new double[12];
int i=0;
while (s.hasNextDouble()) {
    darray[i++] = s.nextDouble();
}
for (double d : darray) {
    System.out.println(d);
}
于 2013-11-13T13:02:23.603 に答える
0

強化された for ループは、既に配列/コレクション内の値を確認する場合にのみ役立ちます。Java は参照渡しを行わないため、double humidityフィールドは単なるコピーであり、配列への参照ではありません。

次のようなことをする必要があります

for(int i = 0; i < humidity1.length; i++) 
    humidity1[i] = inFile2.nextDouble();
于 2013-11-13T12:50:54.740 に答える
0

コードに 2 つの問題があります。

まず、この方法で Scanner を使用します。

Scanner s = new Scanner("Bla.txt");

s.nextLine() を呼び出すと、'Bla.txt' が返されます。ファイルの内容を取得するには、次のように File オブジェクトをスキャナーに渡す必要があります。

Scanner inFile2 = new Scanner(new File("/Users/timothylee/KeyWestHumid.txt"));

2番目の問題は、これらの値を配列に入力する方法です。これが私のアプローチです。

public static void main(String[] args){

    try {

        //Initiate the scanner to read the files content 
        Scanner scanner = new Scanner(new File("D:\\temp\\backup_branch\\test.txt"));

        //Have something to care about array dimensions (see note about this in the answer!)
        List<Double> numbersFromFile = new ArrayList<Double>();

        while(scanner.hasNext()){
            double num2 = scanner.nextDouble();
            //add every number
            numbersFromFile.add(num2);
        }

        //Have it as array
        //Object[] vals = numbersFromFile.toArray();
        //double d = (double) vals[0];
        //System.out.println(d);

        //Print it 
        for(Double d : numbersFromFile){
            System.out.println(d);
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

注:ジェネリックとプリミティブ型に関しては不足しているように見えるので、このソリューションのジェネリック部分に依存しないでください。最初に配列にデータを入力してから、新しい for ループを使用して既存の配列を反復処理する必要があることを示します。

于 2013-11-13T12:51:30.317 に答える