Hey, ich will folgendes machen.
Als Input der Methode bekomme ich 2 Strings, Rückgabewert ist ein String mit gleich vielen Stellen. Meine Main Methode enthält den Scanner und soll dann in der Konsole das ganze ausgeben.
Beispiel:
s1 = 1234
s2 = 3423
output in der Konsole: 4657
Methoden die zwischen Integer und String konvertieren soll ich nicht verwenden.
Daher wollte ich sowas wie eine schriftliche Addition machen, der Einfachheit halber habe ich bisher das ganze nur versucht ohne einen übertrag falls 2 Zahlen grösser als 10 werden.
Jedoch klappt es nicht so ganz, da ich im loop glaub z1 und z2 immer wieder überschreibe bekomme ich am Ende sowas:
s1 = 1234
s2 = 4321
output= 5
Würde mich über Hilfe freuen
___________________________________________________________________________
Java:
publicstaticStringadd(String s1,String s2){int z1 =0;int z2 =0;String s3 ="";int result =0;for(int i = s1.length()-1; i >=0; i--){char a = s1.charAt(i);char b = s2.charAt(i);
z1 = a -'0';
z2 = b -'0';}
result = z1 + z2;
s3 =String.valueOf(result);
eturn s3;}}
Selbst konvertieren. Das funktioniert ganz einfach. Du musst Dir nur überlegen, was der Wert einer Ziffer ist und was mit diesem Wert passiert, wenn Du rechts davon eine weitere Ziffer hinzunimmst... Noch ein Hinweis: man läuft einfach alle Ziffern von links nach rechts durch.
Habe heute noch kurz versucht das ganze etwas zu verbessern und zwar wollte ich nun das ganze erweitern um dann Zahlen addieren zu können wie:
125
668
___
793
Aber ich blick grad gar nicht durch, wo ich was ändern muss, von der Überlegung her müsste ich ja :
- Schleife von rechts nach links laufen lassen und dann jenachdem ob die hinterste Stelle >10 ist result = z1+z2-10 oder andernfalls result = z1+z2 rechnen. Im ersten Fall hätte ich ja dann den Übertrag eine Stelle weiter anch vorne, aber ich weiss hier nicht wie ich das machen soll.
- Zweites Problem ist, dass wenn ich die Schleife von hinten durchlaufe mein Ergebnis am Ende falsch herum ist. Finde hier aber weder mit String. noch s4. eine Methode um das Ergebnis einfach umzukehren.
Ich habe dann versucht mit .substring zu ändern, ging aber nicht.
Am Anfang ist der Übertrag 0, der Ergebnis-String ist der leere String ("").
Jetzt läufst Du von rechts nach links, dabei addierst Du die jeweiligen Stellen sowie den Übertrag. Wenn das Ergebnis > 9 ist, setzt Du den Übertrag (für den nächsten Durchlauf) auf 1 (sonst auf 0), rechnest für die aktuelle Stelle aber natürlich ohne Übertrag (-10).
In der Schleife setzt Du noch ergebnis = ergebnisDerAktuellenStelle + ergebnis. Ende der Schleife.