2016-03-22 8 views
0
gleich

Dieser einige meiner aktuellen Code ist:prüfen, ob Liste <Integer> in einen int

Klasse usedCoords enthält:

public List<Integer> USEDX = new ArrayList<Integer>(); 

main Funktion enthält:

if(fX % gridX == 0 && fZ % gridZ == 0 && ALPHA != 0 && usedcoords.USEDX == fX) { } 

Hinweis ich auch getan : usedCoords usedcoords = new usedCoords();, deshalb habe ich es usedcoords genannt.

Meine Hauptaufgabe ist, dass ich die usedcoords.USEDX == fX möglich machen möchte. Zur Zeit bekomme ich einen Fehler, weil fX is an integer. USEDX hat auch ganze Zahlen, also wie überprüfen Sie, ob die ganze Zahl in USEDX gleich fX ist?

Vielen Dank im Voraus.

+2

http://stackoverflow.com/questions/9342859/i-need-to-find-a-integ-data-in-arraylist Sie könnten diese Frage auch überprüfen – denis

+0

Konnte es nicht finden, weil ich nicht wusste wie man es ausdrückt! Lol – RACING121

+1

Sie sollten den Titel der Frage umbenennen, was ziemlich verwirrend ist. – manouti

Antwort

3

Verwendung List#contains() - und es ist besser lesbar und konventionellen nicht Variablennamen mit einem Groß beginnen zu haben, wenn sie Konstanten sind:

if (fX % gridX == 0 && fZ % gridZ == 0 && alpha != 0 && usedcoords.usedX.contains(fX)) { 
    ... 
} 

Die int Variable fX wird automatisch in den Integer vom Compiler Typ geschachtelt werden .

+0

Arbeitete gut, aber ich erinnerte mich, fX war ein float, aber ich reparierte es durch Umwandlung (int) fX – RACING121

+0

In diesem Fall können Sie Genauigkeit verlieren (sowohl '3.0' und' 3.3' werden mit einer '3' in der Liste verglichen). Idealerweise sollten Sie eine 'List ' haben. – manouti

+0

Wahre Punkt, aber ich habe auch sichergestellt, dass es durch 4 teilbar ist (so wird es immer ganz sein) Ich musste sie nur als Schwimmer halten, weil ich es mit Vector3f (s) einfacher machen wollte – RACING121

3

USEDX hat auch ganze Zahlen, also wie überprüft man, ob die ganze Zahl in USEDX gleich fX ist?

von List.contains(Object) welche kehrt true aufrufen, wenn diese Liste das angegebene Element enthält. So etwas wie,

if (USEDX.contains(fx)) { 
    // ... 
} 
0

Für Effizienz-Gründe, können Sie Hashtable<Integer> statt List verwenden, da es O (1) (konstant) Zeit für einen Wert suchen erfordert.

Verwandte Themen