Jak zkontrolovat, zda prvek v poli existuje v Javě

hlasů
5

Mám-li mít intřadu strukturovanou takto:

private int[][] map = new int[400][400];

A snažím se získat

map[100][200]

A tento prvek není inicializována, budu mít / runtime chyba kompilátoru nebo vrátí null? A je tu nějaká funkce pro kontrolu, zda existuje / byl stanoven určitý prvek / index?

Položena 07/03/2009 v 23:31
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
11

Jak se vaše prohlášení pole je primitivního typu nebudete mít žádné chyby kompilátoru nebo runtime - bude vrácena výchozí hodnota 0.

Pokud váš pole byla řada objektů, pak se pole bude držet nullv případě jakéhokoli prvku není specificky přiřazena.

Odpovězeno 07/03/2009 v 23:37
zdroj uživatelem

hlasů
3

Nevrátím se null, protože intje primitivní typ. To se vrátí výchozí inthodnotu, která je 0.

Neexistuje žádný způsob, jak zjistit, zda byl nastaven jakýkoliv prvek, krátký uchovává samostatnou logickou řadu.

Odpovězeno 07/03/2009 v 23:36
zdroj uživatelem

hlasů
2

V Javě, pouze referenční proměnné jsou inicializovány na hodnotu null. Primitiva jsou zaručeně vrátí příslušné výchozí hodnoty . Pro ints, tato hodnota je 0.

Odpovězeno 07/03/2009 v 23:37
zdroj uživatelem

hlasů
1

Ne.

Vaše prvky pole jsou jen dostatečně velká, aby držet intů, v tomto případě. Neexistuje žádné místo pro uložení informací o v případě, že prvek „existuje“. To bylo přiděleno, a proto existuje. V Javě, nově přidělené intbude pole se inicializuje na všechny prvky nulu.

Odpovězeno 07/03/2009 v 23:35
zdroj uživatelem

hlasů
0

Trochu mrtvé téma, ale já ji našel náhodou, takže budu vkládám svůj kus moudrosti (nebo cokoliv: P). Dalo by se použít Arrays.Fill naplnit vaše pole, když je vytvořen s neplatnou hodnotu jako -1. Pak můžete snadno udělat if x <0 a zkontrolujte, zda máte inicializaci, že specifické postavení pole či nikoli. Jen nápad ...

Odpovězeno 22/03/2011 v 16:00
zdroj uživatelem

hlasů
0

Můžete použít checkstyle , PMD a FindBugs na zdroji (FindBugs na binární), a oni vám řeknou věci, jako je tento.

Bohužel to nevypadá, jako by chytat tento konkrétní problém (což dává smysl The pole je zaručeno, že každý člen nastaven na hodnotu 0, null nebo falešné).

Využívání těchto nástrojů může chytí instance a členy třídy (které nejsou pole), které jsou používány před přiřazena hodnota když (podobně jako třídění vydání).

Odpovězeno 07/03/2009 v 23:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more