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);
	}
}
 
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.
 
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:
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.
 
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);
 
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:
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!
 
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.
 
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. 🙂
 
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


Zurück
Oben