看起來好像你可以完全在循環內聲明掃描儀,它會工作得很好。
我讀過你應該給你變量儘可能小的範圍。這是否意味着我寫的下面的代碼不正確?使用新運算符還是在循環中聲明變量?
Scanner SeatScan;
int x = 0,y = 0;
for(int i = 0; i < names.size(); i++) {
SeatScan = new Scanner(seats.get(i));
if(SeatScan.hasNext()){
x = SeatScan.nextInt();
y = SeatScan.nextInt();
}
people.add(new Person(x,y,names.get(i)));
}
這是更好的
for(int i = 0; i < names.size(); i++) {
int x = 0,y = 0;
Scanner SeatScan = new Scanner(seats.get(i));
if(SeatScan.hasNext()){
x = SeatScan.nextInt();
y = SeatScan.nextInt();
}
people.add(new Person(x,y,names.get(i)));
}
不會循環申報並重新分配x和y的值設置爲0每次迭代之後並在重新申報的掃描一遍又一遍(雖然它可能沒有按不這樣做)?同樣對於第一個代碼,我不會從eclipse得到關於我的掃描儀的警告。 如果我關閉它說「掃描儀未初始化」?對於第二個版本,它說資源泄漏,掃描儀永遠不會關閉。這裏發生了什麼,以及如何在使用循環時從現在開始聲明我的變量?
'應該'vs'必須'。 –
這取決於..是否要在循環外使用x和y ......否則沒有區別.. – TheLostMind
旁註:您應該以小寫字母開頭所有變量名 - 這是Java中的約定(除非變量是最終的)。 – ujvl