3

コンパイルできないコード スニペットを次に示します。最後の行で、dots_per_page 変数が初期化されていないというエラーが表示されます。このエラーは、表示されている最初の行の値と等しく設定すると消えます。私が見落としているものはありますか?宣言時に値と等しく設定する必要があるとは思いませんでした。

long dots_per_page;
if (print_type == 'T' || print_type == 't') {
dots_per_page = 5000;
}       
else if (print_type == 'I' || print_type == 'i') {
dots_per_page = 10000;
}               
else {
System.out.println("You did not provide a valid option.");
}   
System.out.println(dots_per_page);
4

8 に答える 8

3

Java チュートリアル: プリミティブ データ型

フィールドの宣言時に値を割り当てる必要は必ずしもありません。宣言されているが初期化されていないフィールドは、コンパイラによって適切なデフォルトに設定されます。一般的に言えば、この既定値は、データ型に応じてゼロまたは null になります。ただし、このようなデフォルト値に依存することは、一般にプログラミング スタイルが悪いと見なされます。

データ型のデフォルト値

ローカル変数は少し異なります。コンパイラは、初期化されていないローカル変数にデフォルト値を割り当てません。宣言されているローカル変数を初期化できない場合は、使用する前に必ず値を割り当ててください。初期化されていないローカル変数にアクセスすると、コンパイル エラーが発生します。

于 2013-09-19T23:00:00.160 に答える
0
else {
System.out.println("You did not provide a valid option.");
}   
System.out.println(dots_per_page);

コーディングはほとんど機能しませんでした。少しだけ誤差がありました。if-else ステートメントで、「有効なオプションを指定しませんでした」というステートメントを出力します。次に、dots_per_page を印刷します。ただし、else ステートメントに移動した場合は、dots_per_page を印刷できません。印刷する dot_per_page があることを確認できる if-else ステートメントの他の領域に print ステートメントを配置することをお勧めします。

于 2015-11-09T06:32:15.493 に答える