Quersumme aus einem String berechnen (JAVA)

2 Antworten

Mit den Klassen in Java bin ich nicht 100% vertraut, müsste erst nachschauen, wie es korrekt lautet, aber sinngemäß musst Du folgendes machen:

for(int i=0; i<eingabe2.length(); i++){
        j+=Integer.parseInt(eingabe[i]);
}

Du addierst lediglich den Schleifenzähler, musst aber auf den String zugreifen.^^ Übrigens müsste man noch prüfen, ob tatsächlich eine Ziffer an der Stelle i vorliegt, ansonsten wird eine exception geworfen für den Fall, dass nicht geparsed werden kann.

javalerner 
Fragesteller
 24.01.2012, 09:34

haut zwar noch nicht so ganz hin, aber vielen Dank für den Tipp mit dem String! Daran habe ich gar nicht gedacht.

0
Michael339  24.01.2012, 18:05
@javalerner

Sorry, das kommt davon wenn man die Aufgabenstellung und die Lösung nur überfliegt. Irgendetwas stimmt an Deinem und meinem Code nicht. Innerhalb meiner/Deiner For-Schleife_ eingabe2.length -> geht nicht. Mit dieser Anweisung würde man auf ein Integer-Array zugreifen. Das existiert allerdings nicht. Korrekt müsstest du die Char in eingabe2 durchlaufen, also sinngemäß wie folgt:

 for(int i=0; i<eingabe.length(); i++){
    try{
       // falls die Eingaben Buchstaben etc. enthält
       j+=Integer.parseInt(eingabe[i]);
    }
    catch(){}
 }

Du gehst allerdings noch einen anderen Weg. Nachdem Du von der Console etwas eingelesen hast, wandelst Du es gleich in einen Integer um (in eingabe2 enthalten). Um die Quersumme aus einem Integer zu bilden, gibt's zwei Möglichkeiten. 1.

while (eingabe2 != 0)
{
j+= einhabe2 % 10;
eingabe2 = eingabe2 / 10;
}

^^ in einer Schleife wird jeweils die rechte Ziffer (Rest bei Division durch 10) einer Zahl genommen und zu j addiert. Anschließend wird der Integer durch 10 dividiert. Bsp.

integer2 = 5678
j = 5678 % 10 = (5678 durch 10 = 567, Rest 8) = 8
integer2 = 5678 / 10 = 567
567 % 10 = (567 durch 10 = 56, Rest 7) = 7
j = 8 + 7
integer2 = 567 / 10 = 56
56 % 10 = (56 durch 10 = 5, Rest 6) = 6
j = 8 + 7 + 6
etc.
  1. Um eine einstellige Quersumme zu erhalten, musst Du vom Integer solang 9 subtrahieren, bis der Integer einstellig ist:

    while (integer2>9)
    {
         integer2 -= 9;
    }
    
0

Der Ansatz von Michael339 ist schon recht gut. Du baust eine Schleife, in der Du durch jedes Zeichen des Eingabestrings durchläufst, dieses Zeichen zum Integer umbaust und addierst. Je nach Aufgabenstellung, musst Du aber die Quersummenberechnung rekursiv aufbauen, weil ja die Quersumme wieder eine Zahl mit mehreren Ziffern sein kann, die dann zur Quersumme zusammengezählt werden können. Das ist aber, wie gesagt, abhängig von der Aufgabenstellung. Die Klassen, die Du benötigst, sind java.lang.String und java.lang.Integer