# Spaltensumme Array



## Fe_Wo (26. Apr 2011)

Ich soll ein Array[2][4] automatisch wird werten füllen - das hat funktioniert. 
Jetzt soll ich jeweils die Summe der Spalten in einem neuem Array wiedergeben. 
Ich habe bis jetzt nur geschafft die Summe der Zeillen auszugeben. 

Kann mir wer sagen wie ich das Problem angehen muss?!
Danke :toll:


```
public class Array_erzeugen
{
  public static void main(String args[])
  {
   int [][] array;
   array = new int [2][4];
   int summe=0;

   for(int zeile=0;zeile < array.length;zeile++)
   {
    System.out.print("Zeile " + zeile +" : ");
   
     for(int spalte=0;spalte< array[zeile].length;spalte++)
     {
      array[zeile][spalte]= zeile+spalte;
      System.out.print(array[zeile][spalte] + "|");
      summe=summe + array[zeile][spalte];
      
     }

     System.out.println();

   }
   System.out.println("Summe der Zeilen:" +summe);
  }
}
```


----------



## eRaaaa (26. Apr 2011)

```
public static void main(String[] args) throws Exception {
		int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
		for (int i = 0; i < arr[0].length; i++) {
			for (int j = 0; j < arr.length; j++) {
				System.out.print(arr[j][i] + " "); //addieren
			}
			System.out.println(); //neue spalte
		}
	}
```

anschauen, verstehen (evtl. Fragen stellen), dein Code umbauen, fertig


----------



## JAVAnnik (27. Apr 2011)

hi,

also in deinem Code addierst du ja alle Felder miteinander. Wenn ich das recht verstanden habe willst du ja schlussendlich 2 werte, für jede Spalte einen. Dazu musst du lediglich die for-Schleifen tauschen, also mit der äußeren die Spalten und mit der inneren die Zeilen abfragen. In der innerren addierst du die Werte der Zeilen in der äußeren setzt du sie in das neue Array und setzt deine "summe" wieder auf 0 um dann mit der zweiten Spalte beginnen zu können.


----------



## Fe_Wo (1. Mai 2011)

So, habe es jetzt geschafft das ganze zu addieren. Einfach die Spalte <> Zeile vertauscht.

Jedoch hänge ich mit der Zuweisung des neuen Arrays mit den Summen werten der einzelnen Spalten. 
Er gibt mir dann nur Schrott aus. 


```
public class Array_erzeugen
{
  public static void main(String args[])
  {
   int [][] array = new int [4][2];
   int [] sum_array = new int [summe]; //Summen Array
   
   int summe=0;
   for(int zeile=0;zeile < array.length;zeile++)
   {
    System.out.print("Zeile " + zeile +" : ");
   
     for(int spalte=0;spalte< array[zeile].length;spalte++)
     {
      array[zeile][spalte]= zeile+spalte;
      System.out.print(array[zeile][spalte] + "|");
      summe=summe + array[zeile][spalte];   //Addition
     }
     System.out.println();
     System.out.println("Summe der Zeilen:" +sum_array); //Ausgabe der Summe
     summe=0;
   }
  }
}
```


----------



## eRaaaa (1. Mai 2011)

Fe_Wo hat gesagt.:


> Er gibt mir dann nur Schrott aus.



Tja weil du einfach versuchst das gesamte Array auszugeben in dem du das Array einfach an die println Methode übergibst (System.out.println("Summe der Zeilen:" +sum_array) , das geht nicht so einfach....
Funktionieren würde das eher so : [c]System.out.println("Summe der Zeilen:" +Arrays.toString(sum_array));[/c]
Aber meinst du nicht dass irgendwo die Zeile ala` 
	
	
	
	





```
sum_array[index] = ....
```
fehlt?

```
int [] sum_array = new int [summe];
```
 - solltest du auch noch einmal überdenken


----------



## Fe_Wo (2. Mai 2011)

Sorry ich bin in der Vorlesung noch nicht soweit, bzw versteh das noch nicht so ganz. 
Muss ich die Zahlen jetzt in einem String-Array ausgaben oder geht das auch ohne?


----------



## ARadauer (3. Mai 2011)

poste nochmal deinen code


```
int [] sum_array = new int [summe]; //Summen Array
int summe=0;
```
das kann nicht gehen, du benuzt summe, und dann deklarierst du es erst...



Fe_Wo hat gesagt.:


> Sorry ich bin in der Vorlesung noch nicht soweit, bzw versteh das noch nicht so ganz.
> Muss ich die Zahlen jetzt in einem String-Array ausgaben oder geht das auch ohne?



kommt drauf an, was du willst. du kannst das einfach ausgeben, du kannst das in einem int array halten, du kannst später auch ein string array draus machen, 
ich würde einfach ein int array machen und dieses dann später ausgeben...


----------



## jgh (3. Mai 2011)

hier mal eine Möglichkeit, wie man das ganze umsetzen könnte:


```
import java.util.Arrays;

public class Array_erzeugen {

	// definieren, bzw. deklarieren was man benötigt

	static int[][] myStartArray;
	static int[] summeZeile;
	static int[] summeSpalte;
	static int anzahlZeilen;
	static int anzahlSpalten;

	public static void main(String args[]) {
		// initialiseren der Anzahl an Spalten und Reihen
		anzahlZeilen = 5;
		anzahlSpalten = 5;
		// initialisieren des Arrays
		myStartArray = new int[anzahlZeilen][anzahlSpalten];
		// füllen des Arrays
		fillMyArray();
		// berechnen der Zeilensumme
		calculateRow();
		// berechnen der Spaltensumme
		calculateColumn();
		// drucken des Arrays mit Ergebnissen
		printMyArray(myStartArray);

	}

	private static void calculateColumn() {
		summeSpalte = new int[anzahlSpalten];
		for (int i = 0; i < myStartArray.length; i++) {
			for (int j = 0; j < myStartArray[i].length; j++) {
				summeSpalte[j] = summeSpalte[j] + myStartArray[i][j];
			}
		}
	}

	private static void calculateRow() {
		summeZeile = new int[anzahlZeilen];
		for (int i = 0; i < myStartArray.length; i++) {
			for (int j = 0; j < myStartArray[i].length; j++) {
				summeZeile[i] = myStartArray[i][j] + summeZeile[i];
			}
		}
	}

	private static void printMyArray(int[][] myStartArray) {
		for (int i = 0; i < myStartArray.length; i++) {
			System.out.println(Arrays.toString(myStartArray[i]) + " = "
					+ summeZeile[i]);
		}
		for (int i = 0; i < summeSpalte.length; i++) {
			System.out.print("====");
		}
		System.out.print("\n[");
		for (int i = 0; i < summeSpalte.length; i++) {
			if (i == summeSpalte.length - 1) {
				System.out.print(summeSpalte[i] + "]");
			} else {
				System.out.print(summeSpalte[i] + ", ");
			}
		}
	}

	private static void fillMyArray(int[][] myStartArray) {
		for (int i = 0; i < myStartArray.length; i++) {
			for (int j = 0; j < myStartArray[i].length; j++) {
				myStartArray[i][j] = (int) (Math.random() * 10);
			}
		}
	}
}
```


----------

