Eclipse Programm, was passiert in den Zeilen?

2 Antworten

Von Experte alfredo153 bestätigt

Es handelt sich um ein Java-Programm. Eclipse ist lediglich eine Anwendung, in der ein solches Java-Projekt angelegt werden kann.

Zum Code:

import java.util.Scanner;

Dies ist ein Import-Verweis auf die Scanner-Klasse aus der Java SE. Sie wird später dazu genutzt, um Eingaben auf der Konsole einlesen zu können.

Diese Zeilen:

public class Klausur {
  public static void main(String[] args) {
    /* ... */
  }
}

dienen dazu, eine Klasse namens Klausur anzulegen, in welcher mit der main-Methode der Einstiegspunkt des Programms definiert wird.

Wie schon angedeutet: Mit einer Instanz der Scanner-Klasse kann der Eingabekanal der Konsole beobachtet werden.

Scanner scan = new Scanner(System.in);

In diesen Zeilen werden unterschiedliche Variablen unterschiedlichen Typs angelegt:

String text, hilf;
boolean wahr1 , wahr2;
int ziffer;
int summe = 0;

Dieser Aufruf sorgt für eine Ausgabe auf der Konsole. Das Argument wird wiedergegeben.

System.out.print("Bitte geben sie einen Text mit Zahlen ein");

Mittels der Scanner-Instanz wird dann eine Eingabezeile aus der Konsole ausgelesen und der Wert in der text-Variable gespeichert.

text=scan.nextLine();

Würde ich bspw. Hallo eingeben und mit Enter bestätigen, stände in text auch der Wert Hallo.

Hier startet eine Schleife, die so oft wiederholt wird, wie der Wert in text Zeichen hat.

for (int i = 0; i < text.length(); i++) {

Bei jedem Durchlauf wird das Zeichen geholt, an dessen Stelle sich i gerade befindet. Das heißt, bei der Eingabe Hallo hätte hilf im ersten Durchlauf den Wert H, im zweiten den Wert a, im dritten l, usw..

Diese Ausdrücke:

wahr1 = (hilf.equals("0")) | (hilf.equals("1")) | (hilf.equals("2")) | (hilf.equals("3")) | (hilf.equals("4"));
wahr2 = (hilf.equals("5")) | (hilf.equals("6")) | (hilf.equals("7")) | (hilf.equals("8")) | (hilf.equals("9"));

führen Vergleiche durch.

Im ersten Durchlauf wird H bspw. mit 0, 1, 2, 3 und 4 verglichen. Das Ergebnis dieser Subtests wären true oder false. Diese Ergebnisse werden nochmals miteinander verknüpft. Dafür wird der binäre OR-Operator verwendet.

Es gilt:

  • true | true = true
  • true | false = true
  • false | false = false

Wenn sich einer der Test erfüllt (also das Gesamtergebnis true liefert)

if (wahr1 | wahr2) {

kann man davon ausgehen, dass hilf eine Zahl beinhaltet. Diese wird in einen numerischen Typ konvertiert und auf eine Summe aufgerechnet.

ziffer = Integer.parseInt(hilf);
summe = summe + ziffer;

Die Zahl selbst wird auf der Konsole ausgegeben:

System.out.println(ziffer);

Die berechnete Summe:

System.out.println(summe);

am Ende des Programms ebenso.

Insgesamt bildet das Programm die Summe aus allen einstelligen Zahlen, die man eingibt. Andere Zeichen werden ignoriert.

xFabi101 
Fragesteller
 20.05.2021, 18:46

Das ist eine sehr ausführliche Beschreibung und hilft mir auf jeden Fall weiter! Vielen Dank! Und jetzt hab ich das Projekt auch endlich verstanden!

0

Ohne es groß in einen Editor gepackt zu haben und durch debuggt würde ich sagen errechnet die Schleife die Quersumme - allerdings etwas umständlich.

Pro Scheifendurchlauf wird geprüft ob es sich an der i-ten Stelle der Eingabe um eine Ziffer handelt. Ist das Zeichen eine Zahl von 0-4, dann ist wahr1 = true, 5-9 ergeben wahr2 = true. Und wenn wahr1 oder wahr2 true sind, wird die bisherige Summe plus dem neuen Zahlen-Wert gerechnet. Am Ende erfolgt die Ausgabe der Summe.

Woher ich das weiß:Berufserfahrung – Softwareentwickler
regex9  20.05.2021, 17:31

Eine Quersummenberechnung ist es nicht, da die Eingabe:

1aa2

auch 3 ergeben würde, obwohl es sich um keine zusammenhängende Zahl handelt.

1
holycow1912  20.05.2021, 17:33
@regex9

Jopp, ist so - auch wenn man das hätte in deutlich weniger Zeilen unterbringen können. Aber da die Klasse Klausur heißt nehme ich mal an war das eine Schularbeit. Dann kann man das so machen.

1
xFabi101 
Fragesteller
 20.05.2021, 18:42

Okay, dankeschön! Ich war nämlich nicht sicher weil es sich eben um eine Klausur handelt :)

0