Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Newbie hat Probleme mit Schleife

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    7

    Newbie hat Probleme mit Schleife

    Hi,
    ich habe folgende Aufgabe zu lösen:
    Eingabe von 6 Zahlen. Es muss bei jeder Eingabe geprüft werden ob die Zahl schon eingeben wurde. Wenn ja, muss eine andere Zahl eingeben werden.
    Ich habs jetzt so gelöst, bin aber auf einen Denkfehler gestossen.
    Wenn ich mit dem Code unten eine doppelte Zahl eingebe, komme ich in die Schleife zur Aufforderung zur Eingabe einer anderen Zahl. Dort verbleibe ich so lange bis ich eine andere Zahl eingegeben habe. Was hier aber nicht überprüft wird ob diese eingegebene Zahl schon vorher eingegeben wurde.
    Aber irgendwie kann ich da so gar nicht lösen (?), weil sich hier die Katze immer in den Schwanz beißt.
    Hat mir jemand einen anderen Lösungsansatz?


    Code:
    import java.util.Scanner;
     
    public class Eingabe
    {
       public static void main (String[] args)
       {
         Scanner sc = new Scanner(System.in);
         int i;
         int z;
         int[]zahlen = new int[5];
    
         // Zahleneingabe
         for(i=0; i<zahlen.length;i++)
         {
           System.out.print("Bitte geben Sie die " +(i+1) + ". Zahl ein: ");
           zahlen[i] = sc.nextInt();
    
             // Durchlaufe die Schleife und Prüfe
            // System.out.println("Aktueller Zähler: "+i);
            for(z=0;z<i;z++)
            {
              if(zahlen[i]==zahlen[z])
              {
                do
                {
                 System.out.println("Meldung: die " +zahlen[i] +" ist bereits eingegeben worden");
                 System.out.print("Bitte geben Sie die " +(i+1) + ". Zahl ein: ");
                 zahlen[i] = sc.nextInt();
                }
                while(zahlen[i]==zahlen[0]);
              }
              
            }
    
         }
       }
    }

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Vorerst einmal: dein Array ist mit 5 Elementen zu kurz für 6 Zahlen.

    Zum eigentlichen Problem:

    Betrachte den Fall, dass eine Zahl zum zweiten Mal eingegeben wird nicht als Verzweigung, sondern nur als weiteren Fall die Schleife neu zu durchlaufen.

    Da du in diesem Fall dann eine Wiederholung am selben Index haben willst, darfst du den Index nicht erhöhen, d.h. statt einer for-Schleife mit Erhöhung nach jedem Durchlauf zum Beispiel eine while-Schleife und nur bei erfolgreicher Eingabe den Index erhöhen.

    In Pseudo Code in etwas

    Code:
    if (zahl schon vorhanden)
      fehlermeldung
    else
      i++
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.11.2008
    Beiträge
    7
    Vielen Dank für die Antwort.
    Es sollen nur 5 Zahlen eingeben werden. Hab mich da verschrieben.

    Seit habe ich den Lösungsansatz verstanden.
    Gibt es da noch einen alternative Weg?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •