# Quersumme mit while schleife erstellen



## stylegangsta (16. Aug 2014)

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:

```
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 (16. Aug 2014)

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 (16. Aug 2014)

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

   Quersumme += Zahl % 10;

   Zahl = Zahl / 10;
}

[/Java]


----------



## stylegangsta (16. Aug 2014)

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


----------



## lord239123 (16. Aug 2014)

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:

```
int zahl = Zahl;
```

Hinterher gibst du dann anstatt Zahl die Variable zahl aus.


----------



## stylegangsta (16. Aug 2014)

lord239123 hat gesagt.:


> 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:
> 
> ```
> ...




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 (16. Aug 2014)

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:

```
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.


----------



## stylegangsta (16. Aug 2014)

stylegangsta hat gesagt.:


> 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){
> ...



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


----------



## stylegangsta (16. Aug 2014)

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

Besten Dank


----------



## lord239123 (16. Aug 2014)

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 (16. Aug 2014)

lord239123 hat gesagt.:


> 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.


----------



## lord239123 (16. Aug 2014)

Frag am besten mal Matze.


----------



## Hasenherz (25. Aug 2014)

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


----------

