Moin Leute,
ich hab ein kleines Problem mit einer Aufgabe ich soll magisches Zahlenquadrat, mit variabler aber ungerader Seitenlänge, erstellen. Viele von euch werden sich jetzt sicher sagen nicht schon wieder. Ich denke das ich schon so gut wie fertig bin hab aber ein Problem mit dem Array.
Ich hoffe Ihr könnt mir helfen den Fehler in meinem Code zu finden.
das hier ist die fehlermeldung ich denke das die aktion die ich ausführe über die grenzen des arrays hinausgeht.
ich hab ein kleines Problem mit einer Aufgabe ich soll magisches Zahlenquadrat, mit variabler aber ungerader Seitenlänge, erstellen. Viele von euch werden sich jetzt sicher sagen nicht schon wieder. Ich denke das ich schon so gut wie fertig bin hab aber ein Problem mit dem Array.
Ich hoffe Ihr könnt mir helfen den Fehler in meinem Code zu finden.
das hier ist die fehlermeldung ich denke das die aktion die ich ausführe über die grenzen des arrays hinausgeht.
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at mw.main(mw.java:32)
Java:
import java.util.InputMismatchException;
import java.util.Scanner;
public class mw {
public static void main(String [] args){
int in=0, row=0, col=0, kantLaeg=0, i;
int[][] quadAr = {null};
while(true){
try{
Scanner eingabe = new Scanner(System.in);
in=eingabe.nextInt();
kantLaeg=in;
//prüfen ob die zahl ungerade und größer als eins ist
if((in%2)!=0 && in>1){
//erstellen des array
quadAr = new int[in][in];
for(i=1; i<=kantLaeg*kantLaeg; i++){
//mitteln der eins
if(i==1){
col=kantLaeg/2;
quadAr[row][col]=1;
}
//fall zahl ist die eingegeben zahl oder ein vielfaches von ihr
if((kantLaeg-1)%i==0) {
row--;
quadAr[row][col]=i;
}else{
//oberste zeile und noch weiter
if(row==0 && i!=1) {
row=row + (kantLaeg-1);
col++;
}
//letzte spalte ist erreicht
if(col==(kantLaeg-1) && i!=1) {
row++;
col=col+(kantLaeg-1);
}
//
row++;
col++;
}
}
for(row = 0; row < kantLaeg; row++){
for(col = 0; col < kantLaeg; col++){
System.out.printf("%4d", quadAr[row][col]);
// System.out.printf("\n");
}
System.out.printf("\n");
}
}
}catch (InputMismatchException ex) {
System.out.println("nur zahlen du *****!");
}
}
}
}