Im Array nach einer bestimmten Zahl suchen brauche hilfe?

2 Antworten

1. der Vergleichsoperator "==" schreibt sich ohne Leerzeichen dazwischen. (Das gilt generell für Operatoren.)

2. Schau dir noch mal an, wie eine for-Schleife aufgebaut ist.

Und schau dir noch mal an, was genau der Zuweisungsoperator "=" macht - der hat nämlich einen Rückgabewert und kann deshalb ohne weiteres auch an Stellen auftreten, wo ein Wert gefordert wird.

(Wie kommst du auf

for (int i; i = 0; i++) 

?)

3. Lass dich nicht von den Ratschlägen mit "eigenen Funktionen / Methoden / Prozeduren / ... für Teilaufgaben verwirren - die kommen in euerem Kurs noch vor. (Hoffentlich bald, damit ihr euch von Anfang an angewöhnt, ein Programm sinnvoll zu gliedern - sonst erzeugt ihr hinterher Monstrositäten, die tausende von Zeilen lang sind, erfindet das (viereckige) Rad mehrere Male neu in einem einzigen Programm und erzeugt auf die Weise Code, der Fehlersuche und spätere Änderungen zu einem Alptraum macht; kurz, Code, der sich für http://thedailywtf.com eignet.)

PWolff  18.04.2017, 15:09

Nachtrag: habe gerade gesehen, dass du schon in der Frage eine eigene Methode erwähnst und vermutlich wissen willst, wie du eine solche Methode in deinen Code einbindest und/oder überhaupt eine solche Methode erzeugst.

Ich nehme dazu normalerweise den Codeabschnitt, der ausgelagert werden soll, kopiere ihn als "Body" in eine neue Methode, ersetze den Codeabschnitt an der Originalstelle durch den Methodenaufruf und mache mich dann daran, die nötigen Variablen und ggf. Konstanten an den richtigen Stellen zu definieren (und aus der Originalmethode jetzt überflüssige Variablen / Konstante zu entfernen).

Wichtige Überlegung dabei: der Rückgabetyp der Methode. Falls mehrere Rückgabewerte nötig sind: ist es übersichtlicher, out-Parameter zu nehmen oder eine neue (oder bereits vorhandene) Struktur (oder notfalls Klasse), die die out-Parameter enthält?

-----

Zur IndexOf-Methode im Einzelnen ("IndexOf" heißt die Methode in C#, mit ziemlicher Sicherheit hat Java eine Entsprechung): schau dir an, wie sie im einfachsten Fall arbeitet und versuch, sie nachzubauen.

Tipp: Du kannst auch mitten in einer Schleife eine "return"-Anweisung verwenden.

0

Wie Du den Nutzer eine Zahl eingeben lassen kannst steht bereits in dem Quellcode oben. Das nimmst Du einfach nochmal.

So. Dann brauchst Du eine Schleife, die von vorne nach hinten durch das Array läuft. Auch das steht schon in dem Code oben.

Jetzt musst Du nur noch vergleichen, ob a[i] == wert ist und ggf. i ausgeben.

Fertig.

freakii3876 
Fragesteller
 18.04.2017, 14:01

Wo nehme ich die Zahl denn nocheinmal? Und wie vergleiche ich ob a[i] == wert ist? können sie mir das bitte anhand eines Codes aufschreiben? das wäre super! hänge schon seit 3 Tagen an dieser Aufgabe und komme absolut nicht weiter.

0
ohwehohach  18.04.2017, 14:10
@freakii3876

Nein, ich schreibe Dir keinen vollständigen Code hier hin, denn eigentlich steht schon alles da, was Du brauchst. Du musst nur verstehen, was der bisherige Code tut und dann einzelne Teile des Codes wiederverwenden.

Wie Du den User eine Zahl eingeben lässt, die Du später als Parameter an Deine neue Funktion gibst, steht mehrfach im Code.

Die Schleife

for (int i; i = 0; i++) 
{
if(a[i] == 5)
{
System out println(„Der Array enthält die gesuchte Zahl: “ + a[i]);
}

ist quatsch. Zum einen läuft die gar nicht (siehe Deklaration von Schleifen) und zum anderen fehlt eine abschließende geschweifte Klammer.

Schmeiß die ganze Schleife raus - das ist, was Du in einer eigenen Funktion umsetzen sollst.

Du hast mit der Funktion printFeld sogar schon ein Beispiel, wie man eine solche neue Funktion deklarieren könnte.

Also beispielsweise:

public static void sucheWert(int[] a, int wert)

So. Was soll die tun? Die läuft einmal durch das ganze Array und schaut, ob a[i] == wert ist. Wie man einmal durch das Array läuft, steht in printFeld.

Was ist jetzt der eigentliche Job?

if (a[i] == wert) 
{
// schreibe i auf die Konsole, wie Du das
// an anderen Stellen im Code auch schon siehst
}

Fertig.


0