try catchブロックでこの奇妙な動作があります。私はその中の変数を初期化するとき、彼らは私がnullに変数を宣言するときに奇妙なことがFileInputStreamのFIS =ヌル」である 範囲外のcatchブロック変数を試してください
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
FileInputStream fis;
FileOutputStream fos;
args[0] = "somefile.txt";
args[1] = "copyithere.txt";
int i;
try {
try {
fis = new FileInputStream(args[0]);
} catch (FileNotFoundException e) {
System.out.println("Input file not found");
e.getMessage();
}
try {
fos = new FileOutputStream(args[1]);
} catch (FileNotFoundException e) {
System.out.println("Output file not found");
e.printStackTrace();
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Give input and output file name");
e.getStackTrace();
}
try {
do {
i = fis.read();
fos.write(i);
} while (i != -1);
} catch (IOException e) {
System.out.println("Some IO exception");
e.getMessage();
}
}
}
..私は外でそれらを宣言していても、次のコードの範囲外であると思われ、その後、それはすべて正常になります.. nullへの初期化に相当する初期化なしの宣言ではありません..? "範囲外のエラー"を取り除く他の方法は、catchブロックの最後に "return;"を置くときです。コードはちょうどそれを使ってうまく走ってはいけないのですか?私はそれがどのようにしてエラーを起こすかを見ることができますが、これはfisとfioの「範囲外のエラー?
[OK]を私は外のdelarationsを取るとき、私は..ので、この場合には..感謝を見ます方法と静的にもそれは動作します..あなたはこの区別の理由は何ですか? – Tummomoxie
答えが更新されました – developer
あなたはいつもあなたのローカル変数を初期化する必要があります – developer