while schleife mit array

Guest1

Aktives Mitglied
hey leute,

ich bin schon wieder so verzweifelt.
die Aufgabe lautet: Schreiben Sie anhand der vorgebenen Zeilen die Methode enthaeltPaar(int[]), die true liefert, falls zwei darauffolgende Zahlen gleich sind.

und mein Code sieht so aus:
Code:
public static boolean paarEnthalten(int[] a) {

        int i = 0;

        while (i < a.length && a[i] == (a[i + 1])) {
            i = i + 1;

        }
        return i == a[i];
    }

    public static void main(String[] args) {

        System.out.println(paarEnthalten(new int[]{1, 2, 2, 3}));

    }

was habe ich schon wieder falsch gemacht?
 
Zuletzt bearbeitet:

temi

Top Contributor
Nimm deine beispielhaften Werte und geht Schritt für Schritt im Kopf oder auf Papier den Programmablauf durch. Das Programm ist so klein, dass das problemlos möglich ist.
 

Voldemort92

Mitglied
Mal abgesehen von der while-Schleife:
Was genau soll deine return-Zeile denn tun? So wie die da steht, wird doch nur dann true returnt, wenn das i-te Element des Arrays auch die Zahl i enthält, das ist doch was ganz anderes als die Aufgabenstellung verlangt. Z.B. würde ein [0, 1, 2, 3, 4] Array auch true zurückgeben, obwohl dort keine doppelten Zahlen vorkommen.
 

Guest1

Aktives Mitglied
Mal abgesehen von der while-Schleife:
Was genau soll deine return-Zeile denn tun? So wie die da steht, wird doch nur dann true returnt, wenn das i-te Element des Arrays auch die Zahl i enthält, das ist doch was ganz anderes als die Aufgabenstellung verlangt. Z.B. würde ein [0, 1, 2, 3, 4] Array auch true zurückgeben, obwohl dort keine doppelten Zahlen vorkommen.
wäre dann return i == a[i+1]; richtig ? ich wieß echt nicht mehr was ich da mache, habe noch 10 aufgaben die ich lösen muss, da ich aber keine musterlösung habe weiß ich nicht wie ich vorgehen soll
2. was kann ich denn in der while schleife ändern damit i immer hochzählt( bis i <a.length ) ?
 
Zuletzt bearbeitet:

Voldemort92

Mitglied
Nein, dann wäre ja bspw. a = [1, 0, 1, 2, 3] ein Array was true zurückgibt, weil zb für i = 0 gilt: i == a[i + 1] = true.

Ich würde sagen, vergiss dein obiges Programm, da stimmt leider nur die int i = 0 Zeile.
Wir machen es so, ich beschreibe dir das Problem mal etwas strukturiert und du übersetzt das dann in Code.

- du durchläufst ein int-Array a
- du vergleichst in jedem Schritt den Wert der aktuellen Position mit dem Wert in der darauffolgenden
- sollten beide übereinstimmen, hast du ein Paar gefunden! dann muss true returnt werden
- wenn das Array durchlaufen wurde, ohne das ein Paar gefunden wurde, muss false returnt werden

Kleiner Tipp: wenn du in der while-Schleife ein Paar gefunden hast, kannst du dort einfach mit return true; den Programmablauf unterbrechen. Sollte kein Paar gefunden worden sein, kannst du also einfach return false; am Ende des Programms benutzen.
 

temi

Top Contributor
ich wieß echt nicht mehr was ich da mache, habe noch 10 aufgaben die ich lösen muss, da ich aber keine musterlösung habe weiß ich nicht wie ich vorgehen soll

Lernst du Java in der Schule/Studium oder aus eigenem Antrieb? Falls das erste der Fall ist, dann solltet ihr ja auch gewisse Grundlagen zur Lösung der Aufgaben erhalten.
 

Voldemort92

Mitglied
Ich muss meinen letzten Post etwas revidieren. Das ganze soll ja vermutlich mit einer while-Schleife gelöst werden, was ich schrieb war aber eher auf for-Schleifen ausgelegt.

Daher nun noch mal für while-Schleifen:
Bei while-Schleifen musst du ja in die Klammern schreiben, wann sie weiterlaufen soll - und dementsprechend musst du wissen, wann sie abgebrochen werden soll. So falsch ist dein obiges Programm tatsächlich nicht, aber hierbei hast du dich etwas vertan - wann sollte die Schleife weiterlaufen, also weiter nach Paaren suchen? Und wann sollte sie aufhören nach Paaren zu suchen?

Neuer kleiner Tipp: nutze eine boolean-Variable zur Ausgabe, die du anfangs auf false setzt, bei Fund eines Pärchens auf true setzt und ganz am Ende returnst.
 

Guest1

Aktives Mitglied
Ich muss meinen letzten Post etwas revidieren. Das ganze soll ja vermutlich mit einer while-Schleife gelöst werden, was ich schrieb war aber eher auf for-Schleifen ausgelegt.

Daher nun noch mal für while-Schleifen:
Bei while-Schleifen musst du ja in die Klammern schreiben, wann sie weiterlaufen soll - und dementsprechend musst du wissen, wann sie abgebrochen werden soll. So falsch ist dein obiges Programm tatsächlich nicht, aber hierbei hast du dich etwas vertan - wann sollte die Schleife weiterlaufen, also weiter nach Paaren suchen? Und wann sollte sie aufhören nach Paaren zu suchen?

Neuer kleiner Tipp: nutze eine boolean-Variable zur Ausgabe, die du anfangs auf false setzt, bei Fund eines Pärchens auf true setzt und ganz am Ende returnst.
danke
so einigermaßen habe ich das jetzt verstanden, also mein Code sieht jetzt so aus
Code:
public static boolean paarEnthalten(int[] a) {
       
        int i = 0;
       
        while ((i < a.length-1 && a[i] != a[i+1])){
           
            i = i + 1;
         
        }
        return i == a[i+1];
    }

    public static void main(String[] args) {

        System.out.println(paarEnthalten(new int[]{0,1,2,3,4,4})); // true


    }

wenn ich 2 gleiche werte im Array habe wird true gelifert wenn nicht bekomme ich eine Fehlermeldung wie out of Bounds Exception: 5
 

Voldemort92

Mitglied
Gut, damit sollte die while-Schleife funktionieren.
Jetzt gibt's noch zwei Sachen zu tun:

1) Die Exception: Das Problem hierbei ist, dass du in deiner return-Zeile auf a[i + 1] zugreifen willst. Nach erfolgloser Beendigung der while-Schleife (kein Paar gefunden) hat i aber schon den Wert von a.length - 1 angenommen, das heißt i zeigt aufs letzte Element von a und i+1 ist somit ein undefinierter Bereich.
Der Grund, warum i bei a.length endet ist der, dass die while-Schleife ja auf i < a.length -1 eingestellt ist. D.h. bevor die Schleife abbricht ist i = a.length - 2. In diesem letzten Durchgang wird i dann durch i = i+1 aber auf a.length - 1 angehoben.
Ein einfacher Fix wäre, einfach statt a.length - 1 auf a.length - 2 zu prüfen. Dann vergleichst du ja a[a.length - 3] mit a[a.length - 2], und i wird danach auf a.length - 2 gesetzt.
Jetzt fehlt zwar noch der letzte Vergleich (a[a.length - 2] == a[a.length - 1]?), aber der wird ja in deiner return-Zeile dann getätigt.

2) Eine Kleinigkeit in der return-Zeile: du vergleichst hier wieder i (einen Index) mit einem Element von a. Versuche stattdessen lieber zwei Elemente von a zu vergleichen.
 

Guest1

Aktives Mitglied
Gut, damit sollte die while-Schleife funktionieren.
Jetzt gibt's noch zwei Sachen zu tun:

1) Die Exception: Das Problem hierbei ist, dass du in deiner return-Zeile auf a[i + 1] zugreifen willst. Nach erfolgloser Beendigung der while-Schleife (kein Paar gefunden) hat i aber schon den Wert von a.length - 1 angenommen, das heißt i zeigt aufs letzte Element von a und i+1 ist somit ein undefinierter Bereich.
Der Grund, warum i bei a.length endet ist der, dass die while-Schleife ja auf i < a.length -1 eingestellt ist. D.h. bevor die Schleife abbricht ist i = a.length - 2. In diesem letzten Durchgang wird i dann durch i = i+1 aber auf a.length - 1 angehoben.
Ein einfacher Fix wäre, einfach statt a.length - 1 auf a.length - 2 zu prüfen. Dann vergleichst du ja a[a.length - 3] mit a[a.length - 2], und i wird danach auf a.length - 2 gesetzt.
Jetzt fehlt zwar noch der letzte Vergleich (a[a.length - 2] == a[a.length - 1]?), aber der wird ja in deiner return-Zeile dann getätigt.

2) Eine Kleinigkeit in der return-Zeile: du vergleichst hier wieder i (einen Index) mit einem Element von a. Versuche stattdessen lieber zwei Elemente von a zu vergleichen.
Danke für deine Mühe, jetzt bin ich erleichtert :))
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Array mit while-schleife Java Basics - Anfänger-Themen 12
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
A Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
JavaBeginner22 Würfeln bis 6 while Schleife Java Basics - Anfänger-Themen 13
L while Schleife mit 2 Bedingung endet nicht Java Basics - Anfänger-Themen 3
B do while Schleife Java Basics - Anfänger-Themen 3
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
Informatikf Methoden While Schleife Java Basics - Anfänger-Themen 3
M While Schleife? Java Basics - Anfänger-Themen 4
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
J for /while Schleife Java Basics - Anfänger-Themen 5
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
S Do-While-Schleife Java Basics - Anfänger-Themen 2
S While Schleife Java Basics - Anfänger-Themen 4
S Do-While Schleife Java Basics - Anfänger-Themen 6
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
B Verschachtelung von For-Schleife in While Schleife Java Basics - Anfänger-Themen 14
G while schleife Java Basics - Anfänger-Themen 11
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
G While schleife Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
A Erste Schritte while-Schleife Java Basics - Anfänger-Themen 38
X While Do schleife funtioniert nicht Java Basics - Anfänger-Themen 5
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
W while Schleife und Bedingung Java Basics - Anfänger-Themen 11
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
J While Schleife Java Basics - Anfänger-Themen 19
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
b1ck while-Schleife Java Basics - Anfänger-Themen 10
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
A While-Schleife funktioniert nicht! Java Basics - Anfänger-Themen 33
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
E Alphabet mit einer while Schleife ausgeben Java Basics - Anfänger-Themen 3
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
snipesss Schlüsselworte While Schleife Java Basics - Anfänger-Themen 3
snipesss While Schleife Java Basics - Anfänger-Themen 6
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
A While und For Schleife Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur do while- und while-Schleife Java Basics - Anfänger-Themen 4
C Do-While Schleife (Fehler bei der Klammerung?) Java Basics - Anfänger-Themen 8
C while-Schleife wird zuoft durchgeführt Java Basics - Anfänger-Themen 2
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
F Programm bricht While Schleife nicht ab Java Basics - Anfänger-Themen 4
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
C Erste Schritte Warum ist die While Schleife so schnell? Java Basics - Anfänger-Themen 5
A was wird in der while schleife gemacht Java Basics - Anfänger-Themen 3
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
Z Logikfehler do-while Schleife Java Basics - Anfänger-Themen 4
E While-Schleife Java Basics - Anfänger-Themen 6
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
A Probleme mit While Schleife Java Basics - Anfänger-Themen 10
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
LangUndBreit Erste Schritte 100% cpu auslastung (evtl unendliche while schleife?) Java Basics - Anfänger-Themen 1
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
T while Schleife Java Basics - Anfänger-Themen 22
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2
A do while Schleife wird 2 mal durchlaufen Java Basics - Anfänger-Themen 3
Z Compiler-Fehler do while schleife Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben