Hallo zusammen.
Ich beschäftige mich seit Kurzem mit JAVA und bin ganz klar ein Anfänger. Daher bitte ich um etwas Verständnis. Eine interessante Aufgabe ist mir von jemandem vorgeschlagen worden, aber leider konnte ich diese nicht perfekt erfüllen. Diese ist eine Simulation einer schriftlichen Addition in JAVA. Der Code lässt sich klar kompilieren, jedoch ist die Addition manchmal falsch. „Manchmal“ tönt naürlich komisch, aber das Programm gibt oft das Richtige aus, aber manchmal kommt die falsche Antwort aus. Wie die schriftliche Addition funktioniert muss ich nicht erklären…demnächst poste ich mal Code. Wäre super, wenn mir jemand erklären könnte, wo mein Fehler liegt.
import java.util.*;
public class AdditionArray {
public static int [] add (int []a, int []b){
// Voraussetzung ist, dass a und b die gleiche Länge haben
int [] c = new int [a.length]; //Feld für Ergebnis
int i; //Schleifenzähler
int s; //Summe der aktuell berechneten Stelle
int uebertrag = 0; //Übertrag für die nächste Stelle
for (i = a.length-1; i >= 0; i--)
{
s = a** + b** + uebertrag;
c** = s % 10;
uebertrag = s/10;
c[0]=a[0]+b[0]+uebertrag;
}
return c;
}
public static void main (String [] args){
int l;
Scanner keyboard = new Scanner(System.in); //Tastatureingabe
System.out.println("Wie viele Stellen sollten die zu addierenden Zahlen besitzen? - ");
l = keyboard.nextInt();
keyboard.nextLine();
int [] a = new int [l]; //1.Summand
int [] b = new int [l]; //2.Summand
int [] zahl3; //Ergebnis
//die beiden Summanden mit zufälligen Werten belegen
Random r= new java.util.Random ();
for (int i = 0; i < l; i++){
a**= r.nextInt (10);
b**= r.nextInt (10);
}
//Ergebnis berechnen und ausgeben
zahl3 = add (a, b);
System.out.printf("1.Summand: " + Arrays.toString(a));
System.out.printf("
+");
System.out.printf ("
2.Summand: " + Arrays.toString(b));
System.out.printf("
-----------------------------------");
System.out.printf ("
Die Summe: "+ Arrays.toString(zahl3));
System.exit(0);
}
}
Ich habe schon einige Sachen ausprobieren, aber keiner von meinen Lösungsvorschlägen konnte dieses Problem lösen. Der Fehler ist natürlich ganz klar in der Methode, und zwar in der Zeile
c[0]=a[0]+b[0]+uebertrag;
Die Ausgabe sieht z.B folgendermassen aus:
Wie viele Stellen sollten die zu addierenden Zahlen besitzen? -
5
1.Summand: [6, 4, 4, 7, 3]
+
2.Summand: [7, 1, 0, 9, 9]
Die Summe: [14, 5, 5, 7, 2]
Das ist offensichtlich falsch, aber oft gibt das Programm das Richtige aus. Alle bis zur ersten Stelle sind ja richtig. Ich verstehe nicht ganz wieso das Programm einen Übertrag addiert, obwohl keiner existiert. Bitte um Hilfe! Ich bin ein echter Anfäger, und würde gerne wissen, wo der Fehler liegt. Danke vielmals!!