Array zusammenaddieren java?
Hallo wie würdet ihr eine Funktion in java schreiben die den Inhalt von arrays zusammenaddiert.
6 Antworten
Die Lösung von Trugger rekursiv:
public static int arrayAddierer(int[] a, int start) {
int summe =0;
if(start==a.length) return 0;
else{
summe+=a[i];
return summe+arrayAddierer(a,start+1);
}
Das habe ich allerdings jetzt leider nicht in Java getestet, sondern mit VBA:
Function rek(ByRef aI() As Integer, start As Integer)
Dim summe As Integer
summe = 0
If (start = 4) Then
rek = 0
Else
summe = aI(start)
rek = summe + rek(aI, start + 1)
End If
End Function
Und hier eine Ausführungscode für VBA:
Sub xx()
Dim a(0 To 3) As Integer
a(0) = 35
a(1) = 7
a(2) = 3
a(3) = 4
Cells(2, 2).Value = rek(a, 0)
End Sub
Fehler: summe+=a[start]; statt a[i]
Wie ich feststelle, ist
if(start==a.length) return0;
nicht optimal, sondern wohl eher so etwas:
if(start==a.length-1) return a[start];
Wieviele Arrays? Wie werden sie angegeben? Sollen die Inhalte der Arrays in einen gesamten Wert aufaddiert werden oder die einzelnen Elemente verrechnet werden?
Gesamtwert:
public static int sumArr(int[] first, int[] second){
int result=0;
for(int i=0;i<Math.max(first.length,second.length);i++){
if(i<first.length){
result+=first[i];
}
if(i<second.length){
result+=second[i];
}
}
return result;
}
Für die Elemente
public static int[] sumArr(int[] first, int[] second){
int[] result;
if(first.length==second.length){
result=new int[first.length];
for(int i=0;i<result.length;i++){
result[i]=first[i]+second[i];
}
return result;
}
throw new IllegalArgumentException("Arraylänge ungleich. Array 1: " + first.length + ", Array 2: " + second.length);
}
public static int[] AddArrays(int[] a, int[] b) throws IllegalArgumentException
{
if(a.length != b.length)
throw new IllegalArgumentException("Array length mismatch");
int[] ret = new int[a.length];
for(int i = 0; i < a.length; i++)
{
ret[i] = a[i] + b[i];
}
return ret;
}
Ich habe es so verstanden, dass du die Elemente in zwei verschiedenen Arrays addieren möchtest und daraus ein neues Array erzeugen möchtest.
public static int arrayAddierer(int[] a) {
int summe =0;
for(int i =0;i<a.length;i++) {
summe += a[i];
}
return summe;
}
Würde auch rekursiv gehen. Falls du noch mehr Fragen hast schieß einfach los :)
Ach was, das passt schon so. Man muss halt nur aufpassen mit den Startwerten da könnte man vllt noch eine exception schreiben. summe+=a[i]; die stelle ist falsch du musst dort summe+=a[start] benutzten ^^
int x;
for (int i=0,;i>=array.len;i++){
x+=array[i];
}