Quersumme Berechnen mit einer While Schleife

Poppigescorn

Mitglied
Ich habe folgenden Code von einem Freund bekommen und hab da ein paar Fragen.

Meine Fragen beziehen sich alle auf die While schleife

Frage1: Was genau bedeutet das "i < eingabewert.length()"?
Frage2: Im Substring wurde als erster Wert "i" angegeben aber was macht das "i+1" nach dem komma genau?
Frage3: Wieso ist am ende der Schleife das "i++;"?



import java.util.Scanner;

public class Quersumme {

public static void main(String[] args) {

System.out.print("Geben Sie eine Zahl ein");
Scanner scan = new Scanner(System.in);
String eingabewert = scan.nextLine();
int quersumme = 0;

int i=0;
while (i < eingabewert.length()) {

String b = eingabewert.substring(i,i+1);
quersumme = quersumme + Integer.parseInt(b);

i++;


}

System.out.print("Die Quersumme von " + eingabewert + " ist " + quersumme);

scan.close();
}


}



}
 
[CODE lang="java" title="Hier nochmal der Code, wusste nicht wie ich das oben angebe sorry :/"]import java.util.Scanner;

public class Quersumme {

public static void main(String[] args) {

System.out.print("Geben Sie eine Zahl ein");
Scanner scan = new Scanner(System.in);
String eingabewert = scan.nextLine();
int quersumme = 0;

int i=0;
while (i < eingabewert.length()) {

String b = eingabewert.substring(i,i+1);
quersumme = quersumme + Integer.parseInt(b);

i++;


}

System.out.print("Die Quersumme von " + eingabewert + " ist " + quersumme);

scan.close();
}


}


[/CODE]
 
da gibts sicher eine mathematische lösung mit modulo 10 und nbissl minus und plus rechnen ohne strings 😉
 
Du solltest dich mit den Grundlagen von Java beschäftigen. Wir können dir hier nicht alle Details erklären.

Aber ein Versuch zu deiner ersten Frage:
Frage1: Was genau bedeutet das "i < eingabewert.length()"?
In "eingabewert" steht der Text (String), den der Benutzer eingegeben hat. In eingabewert.length() steht - wer hätte das gedacht - die Länge der Eingabe. i durchläuft alle Indizes von Buchstaben in eingabewert (diese beginnen mit 0 und enden mit length - 1).
 
Du solltest dich mit den Grundlagen von Java beschäftigen. Wir können dir hier nicht alle Details erklären.

Aber ein Versuch zu deiner ersten Frage:

In "eingabewert" steht der Text (String), den der Benutzer eingegeben hat. In eingabewert.length() steht - wer hätte das gedacht - die Länge der Eingabe. i durchläuft alle Indizes von Buchstaben in eingabewert (diese beginnen mit 0 und enden mit length - 1).
oh okay danke 😀
String b = eingabewert.substring(i,i+1);
und das bedeutet dass er die Length um eine Stelle Erweitert?
 
Du solltest dir einmal die Grudlagen der Java-Bibliothek anschauen, zum Beispiel (für Java 8) unter:

Dann würdest du auch verstehen, dass
String b = eingabewert.substring(i,i+1);
einfach das Zeichen (als String) an der i-ten Stelle heraussucht.
 
Zuletzt bearbeitet:
Die Liste ist sehr unübersichtlich :/ ich bin erst seit 2 Wochen an Java bin echt noch dabei mich da einzulesen
Das mag stimmen.
Aber die Dokumentation der Java-API ist ein wichtiges Hilsmittel, um Java-Programme zu verstehen.
Du solltest dir unbedingt Zeit nehmen, die Bedienung zu verstehen!

Die Klasse "String" ist beispielsweise dokumentiert unter dem package "java.lang"
Du klickst also zuerst auf dieses Package.
Dann klickst du auf die Klasse String.
Dann bekommst du die Methode "substring" angeboten (mit Kurzinformationen)
Durch einen erneuten Klick auf diese Methode bekommst du Detailinformationen.

EDIT: In Java 11 gibt es "Module" und möglicherweise sieht hier die Dokumentation auch anders aus. Vieleicht kann @kneitzel dazu noch etwas sagen.

EDIT2:
Folgende Aussagen sind eine schlechte Ausrede:
Code:
   bin im ersten Semester haha
   Die Liste ist sehr unübersichtlich :/ ich bin erst seit 2 Wochen an Java bin echt noch dabei mich da einzulesen
Es wird im Studium (anders als in der Schule) erwartet, dass man sich selbständig mit bestimmten Themen beschäftigt.
 
Zuletzt bearbeitet:
Ja, aber Java 9 ändert sich die Dokumentation in so fern, als das bei der Referenz noch die Unterteilung in Module dazu gekommen ist.

Also wenn man z,B. die Referent zu der Java 15 API öffnet:
dann sieht man erst einmal eine Liste an Modulen und müsste dann wissen, in welchem Modul java.lang.String steckt.

Generell bietet die Dokumentation aber eine Suchfunktion, also oben rechts einfach einmal "String" eingeben oder "java.lang" (Wobei java.lang ja ggf. auch unbekannt ist. Da java.lang immer importiert ist, übersieht man das ja leicht am Anfang.)
Da kann man auch direkt nach einer Methode suchen, also z.B. substring eingeben. Dann bekommt man eine Liste mit diversen Klassen, also z.B. String, StringBuilder und StringBuffer kommen zuerst und jede mit zwei Implementationen (int und int, int). Und dann kommen noch mehr Klassen und auch Methoden, die substring nur enthalten. Die Suche ist also relativ mächtig.

Generell muss man sich etwas mit dem Aufbau vertraut machen. Da ist Übung wirklich wichtig. Ebenso kann ich nur empfehlen, das Suchen in Google zu üben. Wenn man ein Gefühl für Suchbegriffe und so bekommen, dann hilft das ungemein.

Zu allen Elementen der Sprache selbst kann man in der Regel auch einiges finden. Was macht eine While Schleife? Oder wie sind Schleifen generell in Java aufgebaut? Hier kann ich nur empfehlen, dass Du Dir alles erarbeitest. Diese Grundlagen werden extrem schnell verlassen und da jetzt Zeit zu sparen kostet später ein vielfaches an Zeit!
Meine Empfehlung ist auch ganz klar ein gutes Buch. Bücher die man schnell durchziehen kann sind aus meiner Sicht "Head first java" (Java von Kopf bis Fuss) und Schrödinger programmiert Java. Sind beide locker geschrieben. Aber nur weil man da schnell drüber lesen kann: Wirklich auch praktisch nutzen! Das ist extrem wichtig! Nur durch anwenden vertieft es sich und Du bekommst ein Gefühl dafür.

Wenn Du noch keine Erfahrung in anderen Programmiersprachen hast, dann ist das nur noch wichtiger.

Generell ist auch die Frage: Wie gut schaffst Du es, Kontakte zu knüpfen? Bei uns damals war es üblich, dass man sich zusammen getan hat und dann auch gemeinsam gelernt hat oder gemeinsam gegrübelt hat, was hinter den Worten des Professors alles stecken könnte 🙂
Das mag mit Corona problematisch sein, aber da technische Möglichkeiten gibt es ja viele. Zur Not erstellt man einen Discord Server (oder was auch immer eure bevorzugten Tools sind) auf dem man sich treffen und austauschen kann.
 
Um jetzt nochmal auf das zu Kommen was ich gemeint hatte... dein Scanner funktioniert nur wenn du weist dass der Benutzer sich damit auskennt aber das kannst du NIRGENDS erwarten ausserdem bekommst du dann noch das fach Algorithmen und Datenstrukturen und da musst du das logische denken besitzen so wenig ausnahmen wie mögich zu eruzeugen und wenn du dir das im ersten semester nicht holst kommen probleme auf

1. gib mal 12b23 ein , das programm stürzt sofort ab

du kannst natürlich die Exception auffangen aber es muss ja nicht sein wenn du sowieso nur beim scanner.nextInt erlaubst


Der Prof wollte hinaus dass du Modulo und geteilt benutzt ..deswegen die While schleife
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben