0

ユーザー入力を取得する必要があるJavaのプログラムがありますが、ユーザー入力を取得する必要があるのは1回だけです。その後、スキャナーはもう必要ありません。次のことを行います。

int userInput = new Scanner(System.in).nextInt();

と言って、リソースリークの警告を出し<unassigned closeable value> is never closedます。

スキャナーを 1 回だけ使用し、後でそれを削除して、リソース リークが発生しないようにする別の方法はありますか? using多分C#のステートメントに似た何か。

4

3 に答える 3

6

C# に相当するのusingtry-with-resourcesです。それを使用しないでください。それは を閉じてSystem.inしまいます。この特定のケースの警告は無視してください。ガベージ コレクタに を要求Scannerさせ、標準入力をそのままにしておきます。

于 2014-10-18T01:12:43.213 に答える
0

次の 2 つのオプションが表示されます... オプション #1 : 入力を一度読み取ったらすぐにスキャナーを明示的に閉じます。

Scanner sc = new Scanner(System.in);
int userInput = sc.nextInt();
sc.close();

オプション #2 : try-with-resource ステートメントを使用する

try(Scanner sc1 = new Scanner(System.in)) {
   int userInput1 = sc1.nextInt();
}

オプション #2 の欠点は、try-with-resource ステートメントに存在するすべてのリソース (System.in を含む) が閉じられることです。

于 2014-10-18T02:11:50.353 に答える