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++;
}
これは、いったんスキャナを通過し、正しく値を移入します。