Wie kann man bei Java herausfinden was die Länge der längsten Kette ist? Z.b 112223 liefert ja 2.
Hatten wir ja erst dann schaue mal hier.
Etwas suche hätte sicher auch geholfen.
Ich verstehe das nicht mit Max old und currentWas verstehst du nicht ?
Code bitte in Code-Block oben link "</>" und nicht nur so ein Bruchstück.
Hab ich schon mehrmalsLese den Thread doch erst mal bis zum ende.
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 ErgebnisDer 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.
Ich weiß aber noch nicht wie man die Länge von einem abschnitt einer Kette bekommtMan 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
Wie soll ich das machen wenn ich die Länge nicht weiß zb 11222. ich brauche doch die Länge von 1 um mit 2 zu vergleichenDeine Zahlenfolge wird zur Laufzeit vom User über die Tastatur eingegeben.
Die Entsteht sozusagen nach und nach, solange der User weiter Eingaben macht.
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.Soltest du eine andere Aufgabe haben als der andere Thread dann zeige uns die.
Nicht ganz. Das in den Klammern bei while verstehe ich nichtist dir überhaupt klar was die schon gegebnen Befehle machen?
Und sc.next int auch nixhtist dir überhaupt klar was die schon gegebnen Befehle machen?
Hab mir das angeschaut. Weiß nicht wie ich das machen sollDa 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:
Scanner (Java SE 17 & JDK 17)
declaration: module: java.base, package: java.util, class: Scannerdocs.oracle.com
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.
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.
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);
}
}
}
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:
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:
Das muss so formuliert sein, dass Du diese Anleitung jedem geben kannst und der kann es dann machen - ohne die Aufgabe zu kennen!
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).
Dann nimmst Du wieder die nächste Zahl ....
- 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.
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:
-- Erhöhe den aktuellen Zähler
- Eingabe := nächste Zahl
- Wenn die Eingabe gleich der letzten Zahl, dann
-- 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!
Wenn ich auf run klicke kommt nichtsTeste es doch mal selber.
Wo genau?es wartet auf eine Eingabe von dir
Eclipsewelche IDE benutzt du?
klicke mit der Maus in das Konsolen Fesnster und gib einme Zahl ein.
Welches Fenster?welche IDE benutzt du?
klicke mit der Maus in das Konsolen Fesnster und gib einme Zahl ein.
Soll ich da eine Nummer schreiben und dann was dann?
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).
Dann nimmst Du wieder die nächste Zahl ....
- 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.
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:
-- Erhöhe den aktuellen Zähler
- Eingabe := nächste Zahl
- Wenn die Eingabe gleich der letzten Zahl, dann
-- 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!
Ich sagte benutze Package.
Erstelle erst mit rechst Klick auf src ein neues Package dann mit rechst Klick die Klasse .
Ich sagte benutze Package.
Erstelle erst mit rechst Klick auf src ein neues Package dann mit rechst Klick die Klasse .
Ja hab ich
Hab das gemachtIch sagte benutze Package.
Erstelle erst mit rechst Klick auf src ein neues Package dann mit rechst Klick die Klasse .
Ich sagte benutze Package.
Erstelle erst mit rechst Klick auf src ein neues Package dann mit rechst Klick die Klasse .
Ja hab ich