D
daniel1986
Gast
Java:
import java.util.StringTokenizer;
public class MagicSquare {
private int [][]a;
public MagicSquare(int size){
a= new int [size][size];
}
public MagicSquare(String zeichen){
StringTokenizer t= new StringTokenizer(zeichen,",");
while(t.hasMoreTokens()){
String token= t.nextToken();
}
}
public MagicSquare(int [][]b){
a=new int [b.length][b.length];
System.arraycopy(b,0,a,0,b.length);
}
public boolean isMagic(){
long zeilensumme=0;
long zeilensumme1=0;
long spaltensumme=0;
long spaltensumme1=0;
long diagonalsumme=0;
long diagonalsumme1=0;
for(int y=0;y<a.length;y++){
for(int y1=0;y1<a.length;y1++){
zeilensumme= zeilensumme + a[0][y];
zeilensumme1= zeilensumme1 + a[0][y1];
if(zeilensumme==zeilensumme1){
}else{
System.out.println(false);
return false;
}
}
}
for(int y2=0;y2<a[0].length;y2++){
for(int y3=0;y3<a[1].length;y3++){
spaltensumme=spaltensumme+a[y2][0];
spaltensumme1=spaltensumme1+a[y3][1];
if(spaltensumme==spaltensumme1){
}else{
System.out.println(false);
return false;
}
}
}
for(int d=0;d<a.length;d++){
diagonalsumme += a[d][d];
}
for(int d2=a.length-1;d2>=0;d2--){
diagonalsumme1 += a[d2][d2];
}
if(diagonalsumme == diagonalsumme1){
}else{
System.out.println(false);
return false;
}
if((diagonalsumme == diagonalsumme1) && (spaltensumme==spaltensumme1) && (zeilensumme==zeilensumme1)){
System.out.println(true);
return true;
}else{
System.out.println(false);
return false;
}
}
public static void main(String[]args){
MagicSquare m1= new MagicSquare(2);
m1.addEntry(0,0,1);
m1.addEntry(0,1,2);
m1.addEntry(1,0,3);
m1.addEntry(1,1,4);
m1.print();
System.out.println(m1.isMagic());
MagicSquare m2=new MagicSquare("8,1,6,3,5,7,4,9,2");
m2.print();
System.out.println(m2.isMagic());
int [][]c={{1,15,14,4},{12,6,7,9},{8,10,11,5},{13,3,2,16}};
MagicSquare m3= new MagicSquare(c);
m3.print();
System.out.println(m3.isMagic());
MagicSquare m4 = new MagicSquare(7);
m4.generateOddMagicSquare(7);
m4.print();
System.out.println(m4.isMagic());
}
private void print() {
for(int x=0;x<a.length;x++){
for(int y=0;y<a[0].length;y++){
System.out.print(a[x][y]+" ");
}
System.out.println();
}
}
private void addEntry(int i, int j, int k) {
a[i][j]=k;
}
//a
public void generateOddMagicSquare(int n){
if(n%2 != 0){
System.out.println("aufgabe 2a");
System.out.println("Zahl ist ungerade");
}else{
System.out.println("aufgabe 2a");
System.out.println("IllegalArgumentException");
}
//b
if( n < a.length || n <a[0].length ){
System.out.println("Genügend Platz");
}else{
throw new IllegalArgumentException("nicht genug Speicherplatz");
}
//c
}
}
Hallo das hier ist mein bisheriger Quelltext.
es soll rauskommen
12
34 <--- den gibt Eclipse aus.
false
816
357
492
true
1 15 14 4
12 6 7 9
8 10 11 6
13 3 2 16
true
22 31 40 49 2 11 20
21 23 32 41 43 3 12
13 15 24 33 42 44 4
5 14 16 25 35 36 45
46 6 8 17 26 35 37
38 47 7 9 18 27 29
30 39 48 1 10 19 28
true
Die letzten 3 Matrixen gibt es noch nicht aus.
Was muss ich ändern/hinzufügen das dies funktioniert?