2016-04-09 16 views
1

mein Code wurde angenommen, die Eingabe vom Benutzer für Zeilen und Spalten erhalten und haben sie die Werte für das Array eingeben und dann durch das Array, um den größten Wert zu finden und dann zeigen Sie die Position der höchstes Element, ich bin nur nicht sicher, wo ich falsch gelaufen bin.Fehler beim Lokalisieren des Elements im Array

http://pastebin.ca/3463233

+0

Was ist das Problem, das Sie haben? – elhefe

+0

1) Haben Sie versucht, einen Debugger für diesen Code zu verwenden? 2) Wenn Sie möchten, dass wir helfen, müssen Sie uns einige Hinweise geben; z.B. Warum denkst du, dass etwas falsch ist, irgendwelche Fehlermeldungen/Stacktraces und so weiter. –

+0

'if (a [Zeile] [col] Tdorno

Antwort

0

Der Fehler auftritt, wenn Sie den if-Block in Position getroffen() und wird von Ihrem Zählvariable verursacht.

i beginnt bei 1, anstatt der erste Index eines Java-Arrays, 0 - also, wenn jedes Mal, wenn die innere Schleife ausgeführt wird inkrementiert, geht es vom Ende des Arrays, wenn es auf dem letzten Element ist.

dass Java merken ist nullter indexiert, was bedeutet, dass ein Array der Größe n bei und das letzte Element in n-1 sein erstes Element aufweist. Also, wenn Ihr Array 5 Elemente hat, wird Array [5] einen Fehler verursachen, da dies das sechste (und nicht existierende) Element im Array ist.

Es stürzt jedoch immer noch nach dieser Änderung ab. Dies liegt daran, dass i niemals in der äußeren Schleife zurückgesetzt wird. Angenommen, Sie gehen durch ein 2x2-Array - i beginnt bei 0 und wird dann zweimal erhöht, wenn die erste Zeile durchlaufen wird. i ist jetzt 2, aber die äußere Schleife läuft wieder! Das Programm versucht auf [1] [2] zuzugreifen, was fehlschlägt.

Sie haben mehrere andere Probleme außerhalb dieser Funktion. An diesem Punkt gibt location() erfolgreich den größten Wert im 2D-Array zurück. Sie versuchen dann, die indexOf() Methode zu verwenden, um den Index der Nummer in dem ursprünglichen Array zu finden. Wenn Sie jedoch eine Liste aus dem 2D-Array erstellen, erhalten Sie eine Liste von 1D-Arrays. Der Versuch, den Index einer Zahl in einer Liste von Arrays zu finden, macht keinen Sinn - und daher gibt indexOf() -1 zurück.

Es ist wie fragen, was der Index von 5 in einem Array von Strings ist. Völlig verschiedene Datentypen.

(Auch im Doppel einen Index zu speichern ist eine schlechte Praxis, da es nicht wirklich Sinn macht, einen nicht-ganzzahligen Indexwert zu haben)

Wenn Sie nur die Position des größten Posten finden möchten Im Array würde ich vorschlagen, location() ein 1D-Array mit zwei Elementen zurückgeben: die Zeile und die Spalte. Sie können die Werte von Zeile und Spalte speichern, wenn Sie ein neues, größtes Element finden. Es sollte daher einfach sein, sie nach Abschluss des Vorgangs zurückzugeben.

Viel Glück!

+0

Vielen Dank, das hat sehr geholfen. –

+0

Kein Problem! Achten Sie darauf, es als die Antwort zu markieren, wenn Sie denken, dass alles gelöst ist (: – etherealflux

Verwandte Themen