我在Java項目中有一個類,其中包含一個二維數組值,並提供了與其交互的有用方法。它使用Location對象(它只存儲兩個值)來訪問映射中的點並返回值。它有一個方法isValid(),它檢查Location對象是否在網格的映射中。try/catch中必需的AssignmentOperators
public boolean isValid(Location loc) {
try {
// will throw an ArrayIndexOutOfBoundsException if not valid
// occs is the 2D array within the class
occs[loc.getX()][loc.getY()];
return true;
}
catch (ArrayIndexOutOfBoundsException e) {
return false;
}
}
現在,我知道我可以只使用比較來檢查值,看看是否能LOC在網格內配合,但是這是更快,因爲它並不需要運行比較和被檢查非有效位置的情況下,在很少的情況下。 但是,這是我的問題:由於訪問數組的行返回的值沒有被分配或發送到方法中,所以我收到有關AssignmentOperators的錯誤。我知道將它分配給一個臨時值或通過一些無用的方法運行它可能是一個簡單的解決方法,但這兩個對我來說似乎都是狡猾的bandaid解決方案,我想知道是否有更乾淨的方法來做到這一點。 (此外,前者引發了來自Eclipse的警告。)
無論如何,這是低優先級,但它讓我煩惱,在這樣一個簡單的實現中,如此簡單的事情不可能完全誠實。謝謝!
有關您的檢查位置的方式的問題:http://stackoverflow.com/questions/18872733/is-it-ok-to-use-exceptions-to-check-for-array-boundaries/18872734 – Dariusz 2013-09-18 12:54:01