Quersumme mit while schleife erstellen

stylegangsta

Bekanntes Mitglied
Hallo zusammen,

als Aufgabe für Montag soll ich ein mini Programm mit einer While Schleife erstellen, das nach Eingabe von einer Zahl die Quersumme berechnet und ausgibt.

Hab ich auch und funktioniert Wunderbar, aber nur im zweistelligen Bereich, sprich:
77 = 14
66 = 12
23 = 5 usw.

Aber wenn ich dann z. B.:100 eingebe, wo die Quersumme ja 1 sein sollte erscheint 10 als Ergebnis oder bei 123 erscheint 15, anstatt 6.

Könnte mir bitte jemand helfen den Fehler zu lokalisieren. Danke im Voraus.
Hier der Code:
Java:
import java.util.Scanner;


public class Quersumme {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int Zahl = 0;
		int Quersumme  = 0;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.printf("Zahl eingeben: ");
		Zahl = sc.nextInt();
		
		sc.close();
		
		while (Quersumme != (Zahl / 10) + (Zahl % 10)){
			Quersumme = (Zahl / 10) + (Zahl % 10);
		}
			System.out.printf("Die Quersumme von %d ergibt %d", Zahl, Quersumme);
	}
}
 

JavaMeister

Gesperrter Benutzer
Deine Schleife sieht nicht richtig aus.

Die korrekte Abbruchbedingung ist, dass Zahl == 0 ist, denn in jedem Schleifendurchlauf sollte folgendes passieren:

quersumme += Zahl % 10; // Hinterste Zahl zur quersumme adieren.

Zahl = Zahl / 10 // Hinterste Zahl abschneiden.
 

lord239123

Bekanntes Mitglied
Hier haben wir die Schleife noch einmal richtig:
[Java]
while (Zahl != 0)
{

Quersumme += Zahl % 10;

Zahl = Zahl / 10;
}

[/Java]
 

stylegangsta

Bekanntes Mitglied
Danke für die Antworten. Ich habe den Code geändert und die Quersummenfunktion läuft jetzt, wie es sich gehört, allerdings kommt jetzt folgender Text in der Ausgabe zum Beispiel für die eingebene 23 (Quersumme = 5) steht:
Die Quersumme von 0 ergibt 5. Aber eigentlich sollte doch bei System.out........ Die Quersumme von 23 ergibt 5 stehen.
Bis auf die while schleife hab ich nichts geändert. Bei der fehlfunktion war die Ausgabe der eingegebenen Zahl richtig. Muss ich vielleicht die Zahl, die ich eingebe als dritte Variable hinzufügen? Bin bißchen durcheinander grad?
Danke
 
Zuletzt bearbeitet:

lord239123

Bekanntes Mitglied
Da du vor der Ausgabe die originale Zahl abänderst, musst du sie zwischenspeichern.
Dafür sagst du einfach, nachdem du die Zahl aus der Konsole gelesen hast:
Java:
int zahl = Zahl;

Hinterher gibst du dann anstatt Zahl die Variable zahl aus.
 

stylegangsta

Bekanntes Mitglied
Da du vor der Ausgabe die originale Zahl abänderst, musst du sie zwischenspeichern.
Dafür sagst du einfach, nachdem du die Zahl aus der Konsole gelesen hast:
Java:
int zahl = Zahl;

Hinterher gibst du dann anstatt Zahl die Variable zahl aus.


Also hinter die While Schleife, aber vor System.out eingeben? ungefähr so:
Leider kein JAVA Code Schaltfeld vorhanden, deswegen als Text Sorry.

while (Zahl != 0){
Quersumme = Zahl % 10 + Quersumme;
Zahl = Zahl / 10;
}
int zahl = Zahl;
System.out.printf("Die Quersumme von %d ergibt %d", zahl, Quersumme);
 

lord239123

Bekanntes Mitglied
Nein.
In der Whileschleife änderst du schon den Wert von Zahl, weshalb es direkt davor passieren muss.
Hinter dieser Zeile musst du das einfügen:
Java:
Zahl = sc.nextInt();

In dieser Zeile bekommt die Variable Zahl den Originalwert zugewiesen, welcher direkt danach kopiert wird.
Dies ist notwendig, da die Variable Zahl nach der Schleife immer den Wert 0 besitzt, du aber immer noch den Originalwert ausgeben möchtest.
 
Zuletzt bearbeitet:

stylegangsta

Bekanntes Mitglied
Also hinter die While Schleife, aber vor System.out eingeben? ungefähr so:
Leider kein JAVA Code Schaltfeld vorhanden, deswegen als Text Sorry.

while (Zahl != 0){
Quersumme = Zahl % 10 + Quersumme;
Zahl = Zahl / 10;
}
int zahl = Zahl;
System.out.printf("Die Quersumme von %d ergibt %d", zahl, Quersumme);

Habs gelöst Danke für alles. Es musste zwischen sc.close und while gesetzt werden. Danke, ihr seit die Besten!
 

stylegangsta

Bekanntes Mitglied
Mal was ganz anderes: Wie kann ich das Thema denn jetzt eigentlich als Gelöst bzw. Beendet markieren? Geht das überhaupt?

Besten Dank
 

lord239123

Bekanntes Mitglied
Ganz unten neben dem Antwortenbutton müsste ein Button dafür sein.
Da das Design allerdings vorgestern geändert wurde, kann ich nicht mit Sicherheit sagen, wie dieser Button heißt.
Das Schließen kann immer nur ein Mod oder der Themenersteller machen.
 

stylegangsta

Bekanntes Mitglied
Ganz unten neben dem Antwortenbutton müsste ein Button dafür sein.
Da das Design allerdings vorgestern geändert wurde, kann ich nicht mit Sicherheit sagen, wie dieser Button heißt.
Das Schließen kann immer nur ein Mod oder der Themenersteller machen.

Danke für die schnelle Antwort. Dann wurde der Button entweder abgeschafft oder ich kann noch nicht schließen, weil ich NEU hier bin. :)
 

Hasenherz

Mitglied
Du kannst den Ursprungspost editieren, -> erweitert -> Threadtitel von Hand ändern

edit: merke gerade, dass ein Beitrag nach einer gewissen Frist nicht mehr editiert werden kann
 
Zuletzt bearbeitet:

Neue Themen


Oben