Array Aufgabe so richtig ?

TChill

Mitglied
Servus leute ich mal wieder 🙂
das hier ist die aufgabe
/**
* Schreiben Sie ein Programm welches in einem int-Array array die erste
* Zahl findet deren rechter Nachbar den gleichen Wert hat. Geben Sie die
* Zahl und ihre Position im Array aus. Nachdem die Zahl gefunden wurde,
* soll das Array nicht wetrer bis zum Ende durchlaufen werden. Nehmen Sie
* als Beispiel folgende Array:
*
* int[] array = {2,4,8,-3,-3,-5};
*
* Ihr Programm muss auch dann richtig funktionieren, wenn die Länge der
* Arrays 0 ist oder es keine solche Zahl gibt. Geben Sie dann einen
* entsprechenden Text auf der Konsole aus.
*/
Java:
public static void main(String[] args) {
		int[] array = { 2, 4, 8,-3,-3, -5 };
		
		System.out.println(array.length);

		for (int i = 0; i < (array.length-1); i++) {    // wieso muss ich hier die -1 eingeben damit      
                                                                       // kein "fehler" in der konsole kommt
                                            
			if (array[i] == array[i + 1]) {
                        break;
				
				System.out.println("Zahl" + array[i]);

Stimmt das ganze so mit der aufgabenstellung ?
was ich nicht hinbekomme ist die richtige stelle anzugeben weil so gibt er mir ja nur die -3 aus, aber ich muss ja noch die Stelle ausgeben, da es ein Array ist gibt er mir an Stelle 3 aus,
aber ich will das am schluss steht
Zahl -3 an stelle 4. und 5.
Dankeeee !
 
Den Index bekommst du mit i. Da ein Array immer mit dem Index 0 beginnt, du aber mit Index 1 beginnen willst, musst du einfach auf i einen draufzählen.
Also:
System.out.println("Zahl "+array+" an Stelle "+(i+1)+" und "(i+2)+"!");
 
okay vielen herzlichen dank !
und wie kann ich den das ganze so schreiben wenn keine zwei werte identisch sind, dass es mir nur einen Fehler in der konsole ausgibt.
also wenn das array z.b. {2,4,5,8} wäre
dann nur eine Fehlermeldung mit : keine identischen zahlen vorhanden
weil so gibt es mir bei else in jeder zeile ein
 
Zuletzt bearbeitet:
{ 2, 4, 8,-3,-3, -5 }; -> array.length ist ja == 6 für sechs Elemente.
und du hast in der Schleife einen Vergleich von array und array[i+1].
Wenn du jetzt sagst die Schleife soll bis array.length gehen, vergleicht er array == -5 mit array[i+1] und array[i+1] gibts nicht da -5 der letzte Wert des Arrays ist.
Dh du vergleichst im letzten Schritt das array.length-1 te Element mit dem array[i+1] ten Element, deshalb array.length-1.

Der Punkt zur Position wurde bereits gelöst...

Zwei Kleinigkeiten sind noch nicht beachtet:
...die Länge der Arrays 0 ist oder es keine solche Zahl gibt. Geben Sie dann einen entsprechenden Text auf der Konsole aus.
 
Du könntest ein int counter=0; setzten in der if bedingung und jedesmal wenn es eben zurtrifft das ein wert gleich dem anderen dann soll er counter ++ speichern.
dann schreibst du ausserhabl von der schleife eine if bedinung die bei counter ==0 eine Meldung ausgibt wie keine Identischen Elemente.
In einer weiteren if bedingung frägst du ab if array.length == 0 dann gibst du aus das Array hat keine Elemente.
Der danke Button is nicht umsonst vorhanden ;-)
 
Wenn die gewünschte Kombination von Zahlen gefunden wurde, soll doch nicht weiter durchsucht werden.

Im Vorfeld wird überprüft, ob das Array mehr als 1 Element hat. Wenn ja, dann wird erst das Durchsuchen gestartet. Die Schleife läuft bis i<array.length-1. Ein if guckt immer nach der gesuchten Kombination aus Zahlen. Sollte sie gefunden sein, werden die Positionen und die Zahl ausgegeben und die Schleife wird mit break; (Sprung aus der Schleife) oder return; (Sprung aus der Methode) unterbrochen.
Alternativ ginge es auch mit einem Flag aber ich glaube, dass wird jetzt zu kompliziert. 😀

@bitler
Geiler Name 😀
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben