テキストファイルからデータを読み込んで配列に格納するプログラムを取得しようとしています。テキストファイルには、惑星に関するデータが含まれています。スキャナが自分のファイルから読み取れないのはなぜですか?
Mercury
4.151002e10
2.642029e10
-1.714167e9
-3.518882e4
4.355473e4
6.785804e3
3.302e23
私のファイルの名前はあるtest.txt: はここでの例です。 class.javaファイルと同じディレクトリにあります。私はSystem.out.println(new File("test.txt").getAbsolutePath());
を使って、ディレクトリパスが正しいかどうかを確認しました。コードがコンパイルしようとしたのと同じディレクトリにあるかどうかを確認するためにSystem.out.println(new File("."));
を使用しました。私はそれが正しいディレクトリにあったことを信じるように導かれた)。私はファイルを見つけるさまざまな方法を試しました。ファイル名をUnicode、UTF-8、またはANSIに変更することはキーワードではありませんでした。ファイル内の.\test
は、同じディレクトリ内を検索しますが、どちらも機能しませんでした。
は、ここに私のコードです:
public static void defaultPlanetArray(){
Planet[] solarSystem;
solarSystem = new Planet[9];
PhysicsVector dummyAcceleration = new PhysicsVector();
System.out.println(new File("test.txt").getAbsolutePath());
System.out.println(new File("."));
try{
File file = new File("C:\\Users\\Lizi\\Documents\\Uni Work\\Year 2\\PHYS281\\Project\\test.txt");
Scanner scnr = new Scanner(file);
}
catch(FileNotFoundException e){
System.out.println("File not found!");
}
int i = 0;
while(i<9 && scnr.hasNextLine()){
//read values from file and set as Planet object, then set to array.
i++
}
PhysicsVectorと惑星は、私が作成した両方のクラスです。この抜粋とは別に、PhysicsVectorとPlanetの残りの部分は問題なくコンパイルされます。私はこのコードの特定のビットをコンパイルしようとすると、私が手:
.\Planet.java:65: error: cannot find symbol while(i<9 && scnr.hasNextLine()){ ^
私はこれを推測している、それはファイルを見つけることができないので、変数SCNRがトライセクションで作成されていないことを意味します。私は、tryおよびcatchブロックが含まれていないとき、私が得るので、私はこれを考える:私は最初のメソッドを作成していたときに
.\Planet.java:59: error: unreported exception FileNotFoundException; must be caught or declared to be thrown Scanner scnr = new Scanner(file); ^
は私もcatches FileNotFoundException
を試みたが、それは私に同じエラーを与えますすぐ上にあるように。
私はプログラムの値を設定することができますが、それは多くの不必要なコードを与え、むしろ非効率であると思います。
私の質問は、スキャナーにファイルから自分の値を読み取らせる方法です。
スキャナはそれを外にtryブロックを定義するローカルスコープ内にあります。 –
@LalitVermaもし私がtryブロックの中にスキャナを置かなければ、報告されない例外エラーが出ます。それはあなたの意味ですか? –
シンボルが見つかりませんでしたscnr、あなたはそのスコープの外側にアクセスしています –