Längste Reihe anzeigen lassen

Status
Nicht offen für weitere Antworten.

Shalimar

Mitglied
Joa, ich schon wieder...
Dieses Mal geht es um ein Programm, das wir schreiben sollen, bei dem wir eine Reihe von Zahlen als String einlesen sollen, den String dann zerlegen und die Zahlenreihe dann daraufhin vergleichen sollen, welches die längste Reihe von gleichen aufeinander folgenden Zahlen ist.

Bislang sieht mein Code so aus:

Code:
package übungenUni;

import java.util.Scanner;

public class Reihe 
{
	public static void main(String[] args) 
	{
		Scanner in = new Scanner(System.in);
		
		System.out.println("Werte-String:");
		String werte = in.next();
		int currentLänge = 1;
		String currentWert = "";
		int longestLänge = 1;
		String longestWert = "";
		
		String[] einzelWert = werte.split(";");
		
		for (int i=0; i<einzelWert.length-1; i++)
			{if (einzelWert[i].equals(einzelWert[i+1]))
				{currentLänge++;
				currentWert=einzelWert[i];
				if (currentLänge>longestLänge)
				{longestLänge=currentLänge;
				longestWert=currentWert;
				currentLänge=1;}
				}
			
			}
		System.out.println("Die längste Reihe besteht aus " + 
				longestLänge + " " + longestWert + "en.");
	}

}

Aber da kommt nie das richtige Ergebnis raus. Sobald drei oder mehr gleiche Zahlen aufeinander folgen, wird die Differenz zwischen "longestLänge" und der eigentlichen Länge immer größer. Der Fehler liegt irgendwo im Erhöhen des currentLänge-Counters. Aber ich bin noch nicht drauf gekommen, was es ist oder wie ich es beheben kann...
 

Marco13

Top Contributor
Beim ersten Draufschauen: Wenn zwei aufeinanderfolende Zahlen NICHT gleich sind (als im else-Zweig der Abfrage mit dem "equals") müßte currentLänge=1 gesetz werden - das steht im Moment aber dort, wo die maximale Länge rausgesucht wird.
Vielleicht irritiert aber auch die """Einrückung"""....
 

Shalimar

Mitglied
Ne, hilft leider auch nichts. Ich hab mal nen System.out.println direkt nach currentLänge++ gemacht.
Bei einer eingelesenen Sequenz von "1;2;2;2;2;2;2;3;" erhalte ich einen currentLänge-Count von:
2
2
3
2
3

:shock:
 
S

SlaterB

Gast
diese Ausgabe ist ganz logisch,
kleiner als 2 kann der Wert eh nicht sein, da er minimal immer 1 ist und vor der Ausgabe ein ++ kommt,

wenn currentLänge erstmals 2 ist, kommt das if zur Anwendung, die 2 wird als längste Länge übernommen und auf 1 zurückgesetzt,
deshalb ist in der nächsten Runde nach dem ++ wieder nur ein Wert 2 zu sehen,
nun ist 2 aber nicht mehr hoch genug für das if, es geht eine Runde weiter zur 3, die wird dann wieder längste Länge,
zurück auf 1, ++, also 2, 3, würde dann bis zur 4 laufen und wieder auf 1 zurück,

das zeigt, was du für ein komisches System hast,
du musst erst abwarten, bis sich eine Zahlenreihe zu Ende ist, DANN kannst du die beendete Zahlenreihe mit dem Maximum vergleichen usw.
 

Marco13

Top Contributor
Öhm - nahvollzogen hab' ich das jetzt nicht, aber ... das letzte stimmt glaubich nicht: Wenn das maximum bisher 3 war, und man findet dann eine Folge von 4 Zahlen, dann ist das das neue Maximum - ob aus dieser 4 dann noch eine 10 wird, ändert daran ja nichts....
 
S

SlaterB

Gast
dass die 4 das nächste neue Maximum werden würde sage ich ja auch oder?
bei 4 vs 10 verstehe ich bei dir auch nicht meht viel ;)
 

Marco13

Top Contributor
Häm ja ... bei einer Folge wie

1115555555555999

Findet er erst 3 mal die 1 - das ist dann die Länste kette. Dann findet er die 5er - bei der fettgedruckten erkennt er: Ah, ein neuer Rekord - und speichert sich die 5 und die maximale länge 4. Aber bei jeder weiteren 5 erkennt er wieder: Ah, ein neuer Rekord, und speichert sie sich auch - bei jeder weiteren 5 wird die maximale Länge um 1 erhöht.
Natürlich müßte man sich das maximum (die 10 fünfer) eigentlich erst merken, wenn er die erste 9 findet, aber wenn er sie sich bei jeder neuen 5 merkt, schadet das ja nicht (ggf. ist es weniger effizient, aber könnte den Code verinfachen - speziell im Hinblick auch "spezialfallabfragen", wenn z.B. die Rekord-Reihe die letzte Reihe ist, die man findet (d.h. wenn oben die 999 nicht debistünde).
Ist aber wohl nicht so wichtig...
 

Shalimar

Mitglied
SlaterB hat gesagt.:
das zeigt, was du für ein komisches System hast,
du musst erst abwarten, bis sich eine Zahlenreihe zu Ende ist, DANN kannst du die beendete Zahlenreihe mit dem Maximum vergleichen usw.

Also in meinem Kopf sah das System eigentlich okay aus :lol:
Dachte mir das so, wie Marco das in seinem letzten Post geschrieben hat. Aber das haut ja irgendwie nie hin.

Ich bin jedenfalls kurz davor aufzugeben, weil ich einfach auf keine Lösung komme :( Ich meine, mir zwar klar, wie das praktisch aussehen müsste, aber wie ich das dann in Code umsetze.....
 

hdi

Top Contributor
Pseudo-Code:

Code:
String last = erstesZeichen
int maxNow = 1, maxTotal = 1

for( String now : alleWeiterenZeichen ){
   if ( now == last ) do 
      maxNow++
      if (maxNow > maxTotal) do 
         maxTotal = maxNow
 
   else do
      maxNow = 1
      last = now
}

Ergebnis steht in maxTotal
 

Shalimar

Mitglied
Ähm, bin ich jetzt bescheuert oder ist das nicht in etwa das, was ich sowieso schon geschrieben habe? :D ;-)
Aber irgendwie funzt das alles nicht....
Boah, sorry, mit keinem Programm hab ich bisher solche Probleme gehabt....
 

Marco13

Top Contributor
*einfach mal das post, was in der ersten Antwort beschrieben ist*
Code:
// Von [url]http://www.java-forum.org/de/viewtopic.php?t=80057&highlight=[/url]

import java.util.Scanner;

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

        System.out.println("Werte-String:");
        String werte = null; //in.next();

        werte = "1;2;2;2;2;2;2;3;";

        int currentLänge = 1;
        String currentWert = "";
        int longestLänge = 1;
        String longestWert = "";

        String[] einzelWert = werte.split(";");

        for(int i = 0; i < einzelWert.length - 1; i++)
        {
            if(einzelWert[i].equals(einzelWert[i + 1]))
            {
                currentLänge++;
                currentWert = einzelWert[i];
                if(currentLänge > longestLänge)
                {
                    longestLänge = currentLänge;
                    longestWert = currentWert;
                }
            }
            else
            {
                currentLänge = 1;
            }
        }
        System.out.println("Die längste Reihe besteht aus " +
                           longestLänge + " " + longestWert + "en.");
    }

}
 

Shalimar

Mitglied
*grml* Dabei hatte ich das auch schon ausprobiert... ???:L Hab wahrscheinlich die geschweiften Klammern dann falsch gesetzt gehabt.
Danke jedenfalls, nun kann ich wieder in Ruhe schlafen :) Erstmal :D
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Längste Collatz-Folge Java Basics - Anfänger-Themen 11
O String Methode für längste Sequenz von Leerzeichen Java Basics - Anfänger-Themen 35
D Plateau auslesen und längste Ebene ausgeben Java Basics - Anfänger-Themen 5
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
rosima26 Taylor-Reihe in Java Java Basics - Anfänger-Themen 20
J Fibonacci-Reihe Java Basics - Anfänger-Themen 12
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
K Apache POI Excel Letzte Reihe einer bestimmten Spalte Java Basics - Anfänger-Themen 1
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
G harmonische Reihe Java Basics - Anfänger-Themen 2
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
T Harmonische Reihe Java Basics - Anfänger-Themen 5
A Taylor Reihe für Sinus Java Basics - Anfänger-Themen 3
w0ddes Reihe deselektieren in einer JTable Java Basics - Anfänger-Themen 2
B vorletzten Wert aus einer Reihe bekommen Java Basics - Anfänger-Themen 6
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
0 Harmonische Reihe rekursiv berechnen? Java Basics - Anfänger-Themen 10
Dilandau erweiterbare reihe aus elementen machen? Java Basics - Anfänger-Themen 10
S Zahlen reihe Programmieren Java Basics - Anfänger-Themen 12
G JTable Reihe und Spalte Java Basics - Anfänger-Themen 7
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
W ListView komplett anzeigen Java Basics - Anfänger-Themen 2
BeginnerJava "Weihnachtsbäume" anzeigen: Höhe als Parameter Java Basics - Anfänger-Themen 1
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
D Erste Schritte png in JFrame anzeigen? Java Basics - Anfänger-Themen 3
M PNG als Spieler im Fenster anzeigen Java Basics - Anfänger-Themen 4
M Anzahl Schleifendurchgänge nach x Sekunden anzeigen Java Basics - Anfänger-Themen 2
M Rekursives Programm zum Anzeigen von Primzahlen Java Basics - Anfänger-Themen 3
M Auf MainJFrame Panels anzeigen lassen Java Basics - Anfänger-Themen 19
Rubberduck Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V_Fynn03 Kontostand anzeigen lassen von einer anderen Klasse Java Basics - Anfänger-Themen 3
C Erste Schritte Bilder nach Export anzeigen Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
J Einen Buttonklick in Label anzeigen Java Basics - Anfänger-Themen 6
M jTextPane Bild anzeigen Java Basics - Anfänger-Themen 6
A ArrayList - size() nur nach bestimmtem index anzeigen lassen Java Basics - Anfänger-Themen 13
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
S ArrayListe in einer JComboBox anzeigen Java Basics - Anfänger-Themen 10
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
M Vererbung Ein JLabel einer Elternklasse anzeigen Java Basics - Anfänger-Themen 8
A Jdialog nur 1x anzeigen Java Basics - Anfänger-Themen 2
J Wie kann ich Images per Tastendruck anzeigen/einfügen? Java Basics - Anfänger-Themen 3
T Positionen anzeigen Java Basics - Anfänger-Themen 6
M Probleme mit Anzeigen von String in GUI und if-Anweisung Java Basics - Anfänger-Themen 9
N Datei einlesen und grafisch anzeigen Java Basics - Anfänger-Themen 31
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
binop Bild anzeigen lassen Java Basics - Anfänger-Themen 2
W Erste Schritte Zweidimensionales Array - Gerade Zahlen anzeigen lassen Java Basics - Anfänger-Themen 3
S eingegebene Matrix anzeigen Java Basics - Anfänger-Themen 4
T Kamerabild anzeigen Java Basics - Anfänger-Themen 1
J JPG in JFrame anzeigen lassen Java Basics - Anfänger-Themen 3
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
A Link in der Eingabeleiste nichr anzeigen Java Basics - Anfänger-Themen 1
C Methoden aus Klassen anzeigen lassen Java Basics - Anfänger-Themen 14
T Output in CMD anzeigen lassen? Java Basics - Anfänger-Themen 1
N Input/Output Wenn kein Input, dann Fehler anzeigen lassen im JFrame Java Basics - Anfänger-Themen 6
L Videos in Java anzeigen lassen Java Basics - Anfänger-Themen 10
M Wert aus String Feld anzeigen Java Basics - Anfänger-Themen 7
C JComboBox "Hilfstext" anzeigen Java Basics - Anfänger-Themen 11
C Html in einem JEditorPane anzeigen Java Basics - Anfänger-Themen 2
D Bild im Applet anzeigen Java Basics - Anfänger-Themen 3
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
D Externe Eeite beim Mousover anzeigen Java Basics - Anfänger-Themen 0
M JSP-Einfaches Bild anzeigen Java Basics - Anfänger-Themen 4
L Über 100e Werte anzeigen Java GUI Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
T JLabel anzeigen lassen... Java Basics - Anfänger-Themen 6
H Erste Schritte Uhrzeit anzeigen in Minuten Dezimal Java Basics - Anfänger-Themen 8
A Datum zwischen zwei Daten berechnen und in Tagen anzeigen Java Basics - Anfänger-Themen 4
B Variable im Fenster anzeigen lassen? Java Basics - Anfänger-Themen 2
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
P JTabel größe ändern und button anzeigen Java Basics - Anfänger-Themen 5
D Dialoge anzeigen Java Basics - Anfänger-Themen 9
M Icon laden und anzeigen Java Basics - Anfänger-Themen 2
M Auslesen - Anzeigen - Schreiben Java Basics - Anfänger-Themen 13
K wie Datum in JTable anders anzeigen lassen Java Basics - Anfänger-Themen 2
X Methode in JTextArea anzeigen lassen Java Basics - Anfänger-Themen 18
J Ladebalken anzeigen während Bilder geladen werden Java Basics - Anfänger-Themen 2
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
M Website anzeigen Java Basics - Anfänger-Themen 4
P Erste Schritte Image anzeigen in ausführbarer jar mit der Toolkit class Java Basics - Anfänger-Themen 8
C Button - neues Fenster - Bestellung anzeigen Java Basics - Anfänger-Themen 10
H Java Server/Client, HTML Seite anzeigen Java Basics - Anfänger-Themen 2
B JFrame - Namen anzeigen Java Basics - Anfänger-Themen 2
M Array von Personen anzeigen Java Basics - Anfänger-Themen 3
J Panel + Label anzeigen - Ich kriege es nicht hin Java Basics - Anfänger-Themen 3
G JList Objekte richtig anzeigen in JDK 6 Java Basics - Anfänger-Themen 5
G Bilder in Jar anzeigen lassen Java Basics - Anfänger-Themen 23
B jar Inhalt anzeigen Java Basics - Anfänger-Themen 5
M GUI JList - Objekte listen u. Feld anzeigen? Java Basics - Anfänger-Themen 16
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben