我只是想讓別人查看我的代碼和建議,以便將其作爲一個精心編寫的java代碼進行改進。 我正在做的是使用掃描儀獲取用戶輸入,直到用戶在0-10之間輸入數字。資源泄漏:'in'在這個位置沒有關閉
int Ai = getInput("i", "A");
int Aj = getInput("j", "A");
int Bi = getInput("i", "B");
int Bj = getInput("j", "B");
private static int getInput(String axis, String point) {
int coordinate = 0;
boolean valid = false;
while(!valid){
Scanner in = new Scanner(System.in);
System.out.println("Enter "+ axis +" for " + point +" > ");
if (in.hasNextInt()){
coordinate = in.nextInt();
if (coordinate >= 0 && coordinate <10){
valid = true;
return coordinate;
}
}
}
return coordinate;
}
但我得到一個警告:在第11行「資源泄漏‘在’沒有在這個位置閉」(返回座標;)請有人可以解釋我這個
關閉掃描儀也會關閉底層System.in,這在很多情況下不是一個好主意。 – Henry
@SkrewEverything謝謝你的好解釋。我已經嘗試在return語句之上添加in.close()。然後輸入一個有效的數字(0-10)。它變成了一個無限循環。 – xyzabc
@Henry然後在'main()'中打開掃描器並將輸入作爲參數傳遞給method,並在'main()'結尾關閉掃描器是個好主意? – SkrewEverything