beliebig langes Array berechnen

tomkicker89

Mitglied
Hallo,

angenommen ich habe ein 3x3 großes Array und möchte damit folgendes prüfen...


[0][0]+[0][1]==[0][2]
[1][0]+[1][1]==[1][2]

[0][0]+[1][0]==[2][0]
[0][1]+[1][1]==[2][1]

[2][0]+[2][1]==[0][2]+[1][2]

falls dies zutrifft soll true zurückgegeben werden.

Ich will damit eigentlich nur überprüfen ob in einer Tabelle die Zeilen und Spaltensummen richtig sind...
Soweit auch kein problem, das ganze mache ich mit einer if-Anweisung und fertig..

Wie gehe ich aber nun vor wenn ich das ganze für ein beliebig langes Array machen möchte?
Das ganze wird dann wohl über eine Schleife laufen aber wie stelle ich das an?

Danke für die Hilfe...
 
Für sowas hilft Papier und Stift meistens recht viel. Mal dir dei Array auf, nummeriere die enthaltenen Elemente und laufe in die eine Richtung mit i, in die andere mit j. Aus deinen Indizes musst du schon selbst einen sinnvollen Algorithmus schaffen, glaub nicht, dass das hier jemand für dich erledigen wird.
 
Da mir hier auch immer so gut geholfen wird, wollt ich das jetzt mal durchziehen.

Mit ein paar Ausgaben dabei, die das ganze im Prinzip verdeutlichen sollen.

Ansatz war wie schon geschrieben Zettel und Stift... 🙂



Geht bestimmt auch kürzer, aber funktioniert glaub ich. Teste mal.



Java:
public boolean checkArray(int[][] array){
		
//erstmal Ausgabe des Arrays
		for(int x=0; x<array.length; x++){
			for(int y=0; y<array[x].length; y++){
				System.out.println(x+":"+y+" - "+array[x][y]);
			}
		}
		
		int sum=0;
		
		for(int x=0; x<array.length-1; x++){
			sum=0;
			for(int y=0; y<array[x].length-1; y++){
				sum+=array[x][y];
			}
			System.out.println("sum is: "+sum+"  entry is: "+array[x][array[x].length-1]);
			if(sum!=array[x][array[x].length-1]){
				return false;
			}
		}
		
		
		for(int y=0; y<array[0].length-1; y++){
			sum=0;
			for(int x=0; x<array.length-1; x++){
				sum+=array[x][y];
			}
			System.out.println("sum is: "+sum+"  entry is: "+array[y][array[0].length-1]);
			
			if(sum!=array[y][array[0].length-1]){
				return false;
			}
		}
		
		sum=0;
		for(int x=0; x<array[x].length-1; x++){
			sum+=array[x][array.length-1];
		}
		System.out.println("sum horizontal: "+sum);
		for(int y=0; y<array.length-1; y++){
			sum-=array[array.length-1][y];
		}
		System.out.println("sum horizontal - sum vertical: "+sum);
		if(sum!=0){
			return false;
		}
		
		
		return true;
	}
 

Zurück
Oben