Länge der längsten Kette java

Der Ablauf ist immer gleich:
Formuliere erst einmal in worten, was getan werden soll. Also ich nenne Dir Zahlen und du musst mit Stift und Papier dann irgendwas machen um dann am Ende zu sagen: Die längste Kette war x Elemente lang.

Das muss so formuliert sein, dass Du diese Anleitung jedem geben kannst und der kann es dann machen - ohne die Aufgabe zu kennen!

Und das kann man dann 1:1 in Code übersetzen. Du musst dann nur schauen, was Du dir alles notiert oder gemerkt hast -> Variablen!
Sollte ein Schritt zu komplex sein, um ihn 1:1 in Code zu übersetzen, dann ist das Verfahren einfach erneut anzuwenden für diesem Schritt.
 
Der Ablauf ist immer gleich:
Formuliere erst einmal in worten, was getan werden soll. Also ich nenne Dir Zahlen und du musst mit Stift und Papier dann irgendwas machen um dann am Ende zu sagen: Die längste Kette war x Elemente lang.

Das muss so formuliert sein, dass Du diese Anleitung jedem geben kannst und der kann es dann machen - ohne die Aufgabe zu kennen!

Und das kann man dann 1:1 in Code übersetzen. Du musst dann nur schauen, was Du dir alles notiert oder gemerkt hast -> Variablen!
Sollte ein Schritt zu komplex sein, um ihn 1:1 in Code zu übersetzen, dann ist das Verfahren einfach erneut anzuwenden für diesem Schritt.
Man braucht erstmal einen zahlenabfolgerung zb: 122. dann wird erstmal die erste Kette geschaut also 1. dann wird das gespeichert und dann wird die 2 Kette angeschaut und man schaut ob das größer ist als das erste. Wenn es das ist dann wird das gespeichert. Und das was als letztes gespeichert wird ist das Ergebnis
 
Man braucht erstmal einen zahlenabfolgerung zb: 122. dann wird erstmal die erste Kette geschaut also 1. dann wird das gespeichert und dann wird die 2 Kette angeschaut und man schaut ob das größer ist als das erste. Wenn es das ist dann wird das gespeichert. Und das was als letztes gespeichert wird ist das Ergebnis
Ich weiß aber noch nicht wie man die Länge von einem abschnitt einer Kette bekommt
 
Deine Zahlenfolge wird zur Laufzeit vom User über die Tastatur eingegeben.
Die Entsteht sozusagen nach und nach, solange der User weiter Eingaben macht.
 
Soltest du eine andere Aufgabe haben als der andere Thread dann zeige uns die.
Geben Sie ein Java-Programm LaengsteKette an, das bestimmt, was die Länge der längsten Kette gleicher natürlicher Zahlen in der Eingabe von der Tastatur ist.
Die Beispieleingabe 1 1 2 2 2 3 3 3 3 4 3 3 1 5 . liefert 4, weil 4 aufeinanderfolgende Dreien vorhanden sind und keine längere Kette existiert.
Die Zahlen der Eingabe werden abgeschlossen durch einen einzelnen Punkt. Sie können folgende Programmteile verwen- 2

den, um eine unbekannte Anzahl an Werten nach diesem Schema einzulesen.
import java.util.∗; ...
Scanner sc = new Scanner ( System . in ) ; while(sc.hasNextInt()) {
int i = sc.nextInt(); }
Die Anzahl der einzulesenden Werte wird größer als 0 sein und nach oben hin ist die Anzahl offen.
 
Die beiden Behelfe werdet ihr sicherlich im Unterricht gehabt haben. Schaue in deine Unterlagen.

Oder Doku Scanner.

hasNextInt()) prüft ob etwas über die Tastatur eingeben wurde.
nextInt holt den int der eingeben wurde ab vom Scanner
 
Da wird ein Scanner genutzt. Die Dokumentation zu den Java Framework Klassen findet sich unter:

Einfach in dem Suchfeld oben rechts die Klasse eingeben - in diesem Fall Scanner. Dann erscheint ein Dropdown mit Möglichkeiten - da kann man dann java.util.Scanner anklicken und kommt zur Seite:

Da findet man dann eine Dokumentation der Klasse selbst als auch der Methoden. (Halt auf Englisch).

hasNextInt() prüft, ob das nächste eingegebene Token eine Zahl ist.
nextInt() gibt die nächste eingegebene Zahl zurück.

Die Schleife fragt also so lange Werte ab, wie Zahlen eingegeben wurden. Sobald keine Zahl eingegeben wurde (z.B. Buchstaben), dann bricht die Schleife ab.

Das ist also jetzt das einlesen von Zahlen Zahl für Zahl.
 
Da wird ein Scanner genutzt. Die Dokumentation zu den Java Framework Klassen findet sich unter:

Einfach in dem Suchfeld oben rechts die Klasse eingeben - in diesem Fall Scanner. Dann erscheint ein Dropdown mit Möglichkeiten - da kann man dann java.util.Scanner anklicken und kommt zur Seite:

Da findet man dann eine Dokumentation der Klasse selbst als auch der Methoden. (Halt auf Englisch).

hasNextInt() prüft, ob das nächste eingegebene Token eine Zahl ist.
nextInt() gibt die nächste eingegebene Zahl zurück.

Die Schleife fragt also so lange Werte ab, wie Zahlen eingegeben wurden. Sobald keine Zahl eingegeben wurde (z.B. Buchstaben), dann bricht die Schleife ab.

Das ist also jetzt das einlesen von Zahlen Zahl für Zahl.
Hab mir das angeschaut. Weiß nicht wie ich das machen soll
 
Da ging es ja erst einmal darum, dass man den Code, der gegeben war, versteht.

Dazu reicht prinzipiell schon aus:

hasNextInt() prüft, ob das nächste eingegebene Token eine Zahl ist.
nextInt() gibt die nächste eingegebene Zahl zurück.

Die Schleife fragt also so lange Werte ab, wie Zahlen eingegeben wurden. Sobald keine Zahl eingegeben wurde (z.B. Buchstaben), dann bricht die Schleife ab.

Hier ist dann wichtig: Probiere sowas doch einfach einmal aus. Spiel mit dem Code! Also wenn es um das Verständnis vom Scanner geht, dann spiel mit dem Code herum:
Java:
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextInt()) {
            int eingabe = sc.nextInt();

            System.out.println("eingabe := " + eingabe);
        }
    }
}

==> Programmieren lernt man nur durch programmieren. So Code versteht man am besten, wenn man damit etwas herum spielt.

Das kann man z.B. starten und dann diverse Dinge eingeben.

Wichtig: Dabei geht es rein um die Funktionalität von dem Scanner und der verwendeten Methoden!

Wenn es um die Lösung des Problems selbst geht, dann ist und bleibt der erste Schritt immer, dass man genau verstanden haben muss, was denn genau gefordert ist. Und da hilft gerade am Anfang nur:
Formuliere erst einmal in worten, was getan werden soll. Also ich nenne Dir Zahlen und du musst mit Stift und Papier dann irgendwas machen um dann am Ende zu sagen: Die längste Kette war x Elemente lang.

Das muss so formuliert sein, dass Du diese Anleitung jedem geben kannst und der kann es dann machen - ohne die Aufgabe zu kennen!

Und das kann man dann 1:1 in Code übersetzen. Du musst dann nur schauen, was Du dir alles notiert oder gemerkt hast -> Variablen!
Sollte ein Schritt zu komplex sein, um ihn 1:1 in Code zu übersetzen, dann ist das Verfahren einfach erneut anzuwenden für diesem Schritt.
 
Da ging es ja erst einmal darum, dass man den Code, der gegeben war, versteht.

Dazu reicht prinzipiell schon aus:



Hier ist dann wichtig: Probiere sowas doch einfach einmal aus. Spiel mit dem Code! Also wenn es um das Verständnis vom Scanner geht, dann spiel mit dem Code herum:
Java:
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextInt()) {
            int eingabe = sc.nextInt();

            System.out.println("eingabe := " + eingabe);
        }
    }
}

==> Programmieren lernt man nur durch programmieren. So Code versteht man am besten, wenn man damit etwas herum spielt.

Das kann man z.B. starten und dann diverse Dinge eingeben.

Wichtig: Dabei geht es rein um die Funktionalität von dem Scanner und der verwendeten Methoden!

Wenn es um die Lösung des Problems selbst geht, dann ist und bleibt der erste Schritt immer, dass man genau verstanden haben muss, was denn genau gefordert ist. Und da hilft gerade am Anfang nur:
 

Anhänge

  • image.jpg
    image.jpg
    1,1 MB · Aufrufe: 2
Da ging es ja erst einmal darum, dass man den Code, der gegeben war, versteht.

Dazu reicht prinzipiell schon aus:



Hier ist dann wichtig: Probiere sowas doch einfach einmal aus. Spiel mit dem Code! Also wenn es um das Verständnis vom Scanner geht, dann spiel mit dem Code herum:
Java:
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextInt()) {
            int eingabe = sc.nextInt();

            System.out.println("eingabe := " + eingabe);
        }
    }
}

==> Programmieren lernt man nur durch programmieren. So Code versteht man am besten, wenn man damit etwas herum spielt.

Das kann man z.B. starten und dann diverse Dinge eingeben.

Wichtig: Dabei geht es rein um die Funktionalität von dem Scanner und der verwendeten Methoden!

Wenn es um die Lösung des Problems selbst geht, dann ist und bleibt der erste Schritt immer, dass man genau verstanden haben muss, was denn genau gefordert ist. Und da hilft gerade am Anfang nur:
 

Anhänge

  • image.jpg
    image.jpg
    595,8 KB · Aufrufe: 5
"eingabe = i ' wird nicht das machen was du willst

Benutze sinnvolle Bezeichner.

Welche Variable zählt und welche gibst du am Ende aus. Passt nicht.

Wenn du schon ein umbenennen der Variablen machst dann bitte richtig.
 
Zuletzt bearbeitet:
Also die Beschreibung ist sehr dürftig. Wichtig ist wirklich:
Das muss so formuliert sein, dass Du diese Anleitung jedem geben kannst und der kann es dann machen - ohne die Aufgabe zu kennen!

Also wenn ich dir die Reihe 1 2 2 1 3 3 3 4 1 gebe - wie kommst Du darauf, dass da maximal 3 gleiche Zahlen hintereinander kommen?

Du gehst da doch durch und nimmst die erste Zahl (1) und fängst da an zu zählen mit 1.
Dann überprüfst Du: Ist das denn die bisher höchste Anzahl (das war bisher 0 - wir hatten ja noch keine höchste Anzahl). Also merkst Du dir als höchste Zahl die 1.
Dann nimmst Du die nächste Zahl (2).
- Ist es eine andere Zahl als vorher (1)? Ja, also merkst Du Dir jetzt die 2 als aktuelle Zahl und der Zähler ist wieder bei 1.
Dann nimmst Du wieder die nächste Zahl (2).
  • Ist es eine andere Zahl als vorher (2)? Nein -> also Zähler um 1 erhöhen (der ist dann 2).
  • ist der Zähler größer als die bisher höchste Anzahl? Die ist ja 1, wir haben 2... also ist die höchste Anzahl nun 2.
Dann nimmst Du wieder die nächste Zahl ....

So in der Art musst Du es wirklich durchspielen. Entweder auf einem Zettel oder in Gedanken. Am Anfang wird es auf einem Zettel statt finden müssen.

Das kannst Du Dir dann anschauen und es etwas verallgemeinern. Das Du immer wieder die nächste Zahl nimmst ist also eine Schleife. Das kann man also als Schleife formulieren. Und dann die einzelnen Schritte - das könnte dann so aussehen:

So lange Zahlen verfügbar sind:
  • Eingabe := nächste Zahl
  • Wenn die Eingabe gleich der letzten Zahl, dann
-- Erhöhe den aktuellen Zähler
-- Wenn aktueller Zähler > Maximum dann Maximum = aktueller Zähler
- Sonst (Wenn Eingabe nicht gleich der letzten Zahl):
-- letzte Zahl = Eingabe
-- aktueller Zähler = 1
Gib Maximum aus


Das wäre eine Ablaufbeschreibung mit "-" als Einrück-Zeichen. Was hier noch gemacht werden muss wäre:
a) Man muss einmal durchgehen und schauen, was alles gemerkt wurde.
b) man muss überlegen, was da gemerkt wird (Wäre der Datentyp) und ob/wie es initialisiert werden muss.

Und das alles ganz ohne Java! Das kommt erst jetzt zur Umsetzung! Aber wirklich erst jetzt!
 
Also die Beschreibung ist sehr dürftig. Wichtig ist wirklich:


Also wenn ich dir die Reihe 1 2 2 1 3 3 3 4 1 gebe - wie kommst Du darauf, dass da maximal 3 gleiche Zahlen hintereinander kommen?

Du gehst da doch durch und nimmst die erste Zahl (1) und fängst da an zu zählen mit 1.
Dann überprüfst Du: Ist das denn die bisher höchste Anzahl (das war bisher 0 - wir hatten ja noch keine höchste Anzahl). Also merkst Du dir als höchste Zahl die 1.
Dann nimmst Du die nächste Zahl (2).
- Ist es eine andere Zahl als vorher (1)? Ja, also merkst Du Dir jetzt die 2 als aktuelle Zahl und der Zähler ist wieder bei 1.
Dann nimmst Du wieder die nächste Zahl (2).
  • Ist es eine andere Zahl als vorher (2)? Nein -> also Zähler um 1 erhöhen (der ist dann 2).
  • ist der Zähler größer als die bisher höchste Anzahl? Die ist ja 1, wir haben 2... also ist die höchste Anzahl nun 2.
Dann nimmst Du wieder die nächste Zahl ....

So in der Art musst Du es wirklich durchspielen. Entweder auf einem Zettel oder in Gedanken. Am Anfang wird es auf einem Zettel statt finden müssen.

Das kannst Du Dir dann anschauen und es etwas verallgemeinern. Das Du immer wieder die nächste Zahl nimmst ist also eine Schleife. Das kann man also als Schleife formulieren. Und dann die einzelnen Schritte - das könnte dann so aussehen:

So lange Zahlen verfügbar sind:
  • Eingabe := nächste Zahl
  • Wenn die Eingabe gleich der letzten Zahl, dann
-- Erhöhe den aktuellen Zähler
-- Wenn aktueller Zähler > Maximum dann Maximum = aktueller Zähler
- Sonst (Wenn Eingabe nicht gleich der letzten Zahl):
-- letzte Zahl = Eingabe
-- aktueller Zähler = 1
Gib Maximum aus


Das wäre eine Ablaufbeschreibung mit "-" als Einrück-Zeichen. Was hier noch gemacht werden muss wäre:
a) Man muss einmal durchgehen und schauen, was alles gemerkt wurde.
b) man muss überlegen, was da gemerkt wird (Wäre der Datentyp) und ob/wie es initialisiert werden muss.

Und das alles ganz ohne Java! Das kommt erst jetzt zur Umsetzung! Aber wirklich erst jetzt!
 

Anhänge

  • image.jpg
    image.jpg
    1,1 MB · Aufrufe: 5
Mal eine Frage einen Computer bedienen kannst du schon ?🤔

Mit Eclipse arbeitest du doch nicht zum ersten mal.

Du willst das der User eine Zahl über die Tastatur eingibt, der User bist jetzt du wenn du das Programm testet.
Wie gesagt Klicke in das Consolen Fester. Jetzt kommen auch die Tastraureingaben im dem Programm an.

Schaue deine Aufgabe an wie du das Programm beenden kannst. Wenn du genug eingaben gemacht hast.

"."
 
Tipp: Benutze in Eclipse Package. Das macht einiges leichter mit Eclipse.
Das werdet ihr in der Schule bestimmt auch immer gemacht haben.

In dem Post #29 ist keines zusehen.
 
Mal eine Frage einen Computer bedienen kannst du schon ?🤔

Mit Eclipse arbeitest du doch nicht zum ersten mal.

Du willst das der User eine Zahl über die Tastatur eingibt, der User bist jetzt du wenn du das Programm testet.
Wie gesagt Klicke in das Consolen Fester. Jetzt kommen auch die Tastraureingaben im dem Programm an.

Schaue deine Aufgabe an wie du das Programm beenden kannst. Wenn du genug eingaben gemacht hast.

"."
 
Mal eine Frage einen Computer bedienen kannst du schon ?🤔

Mit Eclipse arbeitest du doch nicht zum ersten mal.

Du willst das der User eine Zahl über die Tastatur eingibt, der User bist jetzt du wenn du das Programm testet.
Wie gesagt Klicke in das Consolen Fester. Jetzt kommen auch die Tastraureingaben im dem Programm an.

Schaue deine Aufgabe an wie du das Programm beenden kannst. Wenn du genug eingaben gemacht hast.

"."
Also die Beschreibung ist sehr dürftig. Wichtig ist wirklich:


Also wenn ich dir die Reihe 1 2 2 1 3 3 3 4 1 gebe - wie kommst Du darauf, dass da maximal 3 gleiche Zahlen hintereinander kommen?

Du gehst da doch durch und nimmst die erste Zahl (1) und fängst da an zu zählen mit 1.
Dann überprüfst Du: Ist das denn die bisher höchste Anzahl (das war bisher 0 - wir hatten ja noch keine höchste Anzahl). Also merkst Du dir als höchste Zahl die 1.
Dann nimmst Du die nächste Zahl (2).
- Ist es eine andere Zahl als vorher (1)? Ja, also merkst Du Dir jetzt die 2 als aktuelle Zahl und der Zähler ist wieder bei 1.
Dann nimmst Du wieder die nächste Zahl (2).
  • Ist es eine andere Zahl als vorher (2)? Nein -> also Zähler um 1 erhöhen (der ist dann 2).
  • ist der Zähler größer als die bisher höchste Anzahl? Die ist ja 1, wir haben 2... also ist die höchste Anzahl nun 2.
Dann nimmst Du wieder die nächste Zahl ....

So in der Art musst Du es wirklich durchspielen. Entweder auf einem Zettel oder in Gedanken. Am Anfang wird es auf einem Zettel statt finden müssen.

Das kannst Du Dir dann anschauen und es etwas verallgemeinern. Das Du immer wieder die nächste Zahl nimmst ist also eine Schleife. Das kann man also als Schleife formulieren. Und dann die einzelnen Schritte - das könnte dann so aussehen:

So lange Zahlen verfügbar sind:
  • Eingabe := nächste Zahl
  • Wenn die Eingabe gleich der letzten Zahl, dann
-- Erhöhe den aktuellen Zähler
-- Wenn aktueller Zähler > Maximum dann Maximum = aktueller Zähler
- Sonst (Wenn Eingabe nicht gleich der letzten Zahl):
-- letzte Zahl = Eingabe
-- aktueller Zähler = 1
Gib Maximum aus


Das wäre eine Ablaufbeschreibung mit "-" als Einrück-Zeichen. Was hier noch gemacht werden muss wäre:
a) Man muss einmal durchgehen und schauen, was alles gemerkt wurde.
b) man muss überlegen, was da gemerkt wird (Wäre der Datentyp) und ob/wie es initialisiert werden muss.

Und das alles ganz ohne Java! Das kommt erst jetzt zur Umsetzung! Aber wirklich erst jetzt!
 

Anhänge

  • image.jpg
    image.jpg
    793 KB · Aufrufe: 0

Zurück
Oben