Längstekette

nuke87

Mitglied
Hallo Leute ,
ich muss ein Programm erstellen das die Länge der längsten Kette gleicher natürlichen Zahlen anzeigt.
Zum Beispiel man gibt 1 1 2 2 2 3 3 3 3 4 3 3 1 5 gefolgt mit einem Punkt zum abschliessen der Eingabe, so wäre in diesem Beispiel die Ausgabe 4, weil 4 aufeinander folgende 3 vorhanden sind und das ist die längste Kette.
Mein Programm spuckt aber irgendwie was anderes immer aus, bei gleicher Zahlenfolge wie oben im Beispiel, kommt bei mir 14 raus. ich weiss nicht warum das so ist. bitte um hilfe.
hier mein code:
Java:
import java.util.*;

public class Laengstekette{
        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);

                int oldZahl = 0;
                int newkette = 0;
                int i = 0;
               

                while (sc.hasNextInt()){
                         i = sc.nextInt();

                        if ( i == oldZahl)
                                newkette +=1;
                        else
                                oldZahl = i;
                }
                sc.close();

                System.out.println(newkette);
        }
}
 

Meniskusschaden

Top Contributor
Wenn ich dein Programm mit deinem Beispiel ausführe, erhalte ich nicht 14, sondern 7. Im Moment prüfst du, wieviele Zahlen vorkommen, die mit ihrem Vorgänger übereinstimmen und das sind eben sieben, nämlich die hier mit + gekennzeichneten:
Code:
1 1 2 2 2 3 3 3 3 4 3 3 1 5
- + - + + - + + + - - + - -
Wenn sich die Ziffer ändert, musst du überprüfen, ob die dadurch abgeschlossene Folge länger ist, als die bisher längste und die Zählung für die neue Folge muß wieder bei 1 beginnen.
 

nuke87

Mitglied
ok erst mal vielen dank, für den tipp. Das ist jetzt mein Problem , wie kann ich das realisieren ? wie stelle ich die überprüfung im code dar, wann sich die ziffer ändert und ob die abgeschlossene Folge länger ist?
 

nuke87

Mitglied
vielen Dank, aber irgendwie blicke ich da jetzt gar nicht durch
soll es ungefähr so sein?:
Java:
import java.util.*;

public class LaengsteKette {

   public static void main(String[] args) {
     Scanner sc = new Scanner(System.in);
     int oldzahl = 0;
     int newkette = 0;
     int i = 0;
     int maxlaenge = 0;
     
     while(sc.hasNextInt()) {
       i = sc.nextInt();
       if(i == oldzahl) {
         newkette += 1;
       } else
         oldzahl = i;
       
       if(i > newkette) {
         maxlaenge +=1;
       } else
         i++;
     }
     sc.close();
     System.out.println(maxlaenge);
   }
}
 
Zuletzt bearbeitet von einem Moderator:

Meniskusschaden

Top Contributor
Du solltest das mal mit vernünftigen Einrückungen formatieren, damit man es besser lesen kann. Ich habe es mir nicht richtig angesehen, aber die Abfrage if(i > newkette) kann nicht richtig sein, denn i ist ein Element der Folge und newkette ist eine Länge. Warum sollte man die miteinander vergleichen? Außerdem wird newkette nicht zurück gesetzt, wenn eine neue Folge beginnt.
 

AnfängerInfo

Neues Mitglied
vielen Dank, aber irgendwie blicke ich da jetzt gar nicht durch
soll es ungefähr so sein?:
Java:
import java.util.*;

public class LaengsteKette {

   public static void main(String[] args) {
     Scanner sc = new Scanner(System.in);
     int oldzahl = 0;
     int newkette = 0;
     int i = 0;
     int maxlaenge = 0;
    
     while(sc.hasNextInt()) {
       i = sc.nextInt();
       if(i == oldzahl) {
         newkette += 1;
       } else
         oldzahl = i;
      
       if(i > newkette) {
         maxlaenge +=1;
       } else
         i++;
     }
     sc.close();
     System.out.println(maxlaenge);
   }
}
Eine Frage ist zwar schon eine Zeit vergangen, aber ich wollte fragen ob du die Lösung noch hast, würde mich sehr freuen :)
 

AnfängerInfo

Neues Mitglied
Hallo Leute ,
ich muss ein Programm erstellen das die Länge der längsten Kette gleicher natürlichen Zahlen anzeigt.
Zum Beispiel man gibt 1 1 2 2 2 3 3 3 3 4 3 3 1 5 gefolgt mit einem Punkt zum abschliessen der Eingabe, so wäre in diesem Beispiel die Ausgabe 4, weil 4 aufeinander folgende 3 vorhanden sind und das ist die längste Kette.
Mein Programm spuckt aber irgendwie was anderes immer aus, bei gleicher Zahlenfolge wie oben im Beispiel, kommt bei mir 14 raus. ich weiss nicht warum das so ist. bitte um hilfe.
hier mein code:
Java:
import java.util.*;

public class Laengstekette{
        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);

                int oldZahl = 0;
                int newkette = 0;
                int i = 0;
              

                while (sc.hasNextInt()){
                         i = sc.nextInt();

                        if ( i == oldZahl)
                                newkette +=1;
                        else
                                oldZahl = i;
                }
                sc.close();

                System.out.println(newkette);
        }
}
Hallo, ist zwar etwas her, aber ich wollte fragen ob du die Lösung noch hast oder mit dabei kurz helfen könntest
 

KonradN

Super-Moderator
Mitarbeiter
Mach doch einfach einen neuen Thread, teil uns darin mit, was Du bisher so hast und was Dein Problem ist. Dann kann Dir auch geholfen werden :)
 

Neue Themen


Oben