これらの値をファイルint型から配列を値を読み、初期化する方法はありますか?

HIM:
import java.io.*;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try {
            File file = new File("C:\\Users\\HIM\\IdeaProjects\\File Tutorial\\src\\quad.txt");
            Scanner scanner = new Scanner(file);

            double a , b, c;
            double[] arr = new double[3];
            for(int i = 0; i < arr.length; i++) {
                while (scanner.hasNextLine()) {
                    arr[i] = scanner.nextInt();
                    System.out.println(arr[i]);
                }
            }
            a = arr[0];
            System.out.println(a);
            b = arr[1];
            System.out.println(b);
            c = arr[2];
            System.out.println(c);

        } catch (Exception e){
            System.out.println("Not Found");
        }
    }
}

私はこのコードを使用するが、値2、3、4転送ループから、配列にそれが成功した読み取ったが、私は、B、Cにそれらの配列の値を初期化しようとしたが、それは最後の値を読み取り、それを割り当てますへ。

クリストファー・シュナイダー:

あなたはそれはあなたを伝えるのは難しいですので、あなたの入力ファイルルックスは、好きなものを言っていない、正確に何が間違っているが、私はこの問題は、使用している疑いがあるhasNextLine、あなたのループでは、しかし、nextIntあなたが読んだとき。これは、例えば、あなたがこのような入力のために期待するように動作しません。

1 2 3

お知らせので、1行があることをhasNextLine、複数のint型がありますが、一つだけの行があり、ので、falseを返します。

あなたはおそらく代わりにしたいことはあるスキャナ#hasNextInt

また、このロジックはおそらく正しいではありません。

for(int i = 0; i < arr.length; i++) {
   while (scanner.hasNextLine()) {
      arr[i] = scanner.nextInt();
      System.out.println(arr[i]);
 }

次のトークンにするとスキャナが移動し、あなたが戻って行くことはできません。あなたは一度だけ新しいスキャナを作成せず、それから読み取ることができるように。

あなたがそうしたいことは次のとおりであります:

int i = 0;
while (scanner.hasNextInt()) {
   arr[i] = scanner.nextInt();
   System.out.println(arr[i]);
   i++;
}

これは、いったんスキャナを通過し、正しく値を移入します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18730&siteId=1