public class Mabangjin
{
public static void main(String args[])
{
//배열을 6으로 만드세요
//님이 사용한 로직은 5를 사용했는데
//그러면 0,1,2,3,4 이런식으로 첨자가 사용 되어야합니다.
//하지만 이 프로그램에서는 5까지 사용하니 6으로 해야
//에러가 발생하지 않습니다.
//의문점 쪽지 주세요
int a[][] = new int[6][6];
int i=1;
int j=(5/2)+1;
for(int k=1;k<=25;k++)
{
System.out.println("i="+i+"j="+j);
a[i][j]=k;
if(k%5==0)
{
i=i+1;
}
else
{
i=i-1;
j=j+1;
}
if(i<1)
{
i=5;
}
else if(j>5)
{
j=1;
}
}
//여기도 수정 x y 값수정
for (int x = 1; x < 6; x++)
{
for (int y = 1; y< 6; y++)
{
//출력을 보기 좋게
System.out.printf("%3d",a[x][y]);
}
System.out.println();
}
}
}
//문]
//a[i][j]=k;에서 배열의 범위를 벗어났다고하네요
//제가 봤을때는 이상없는것 같은데 ㅜ.ㅜ
//고수님들 좀 봐주세요 실행화면도 같이 해주시면 좋고요
//부탁드립니다 밑에는 소스입니다
아래는 다른 로직 마방진 프로그램입니다
import java.util.*; public class MagicSquare { public static void main(String[] args) { int n = 5; // 마방진의 크기 (홀수만 가능) if (n % 2 == 0) { System.out.println("마방진은 홀수 크기만 가능합니다."); return; } int[][] magicSquare = generateMagicSquare(n); printMagicSquare(magicSquare); } public static int[][] generateMagicSquare(int n) { int[][] magicSquare = new int[n][n]; int row = 0; // 시작 위치: 첫 행의 가운데 열 int col = n / 2; int num = 1; while (num <= n * n) { magicSquare[row][col] = num;
// 위로 이동 (위로 나가면 아래로 이동)
int nextRow = (row - 1 + n) % n;
// 오른쪽으로 이동 (오른쪽으로 나가면 왼쪽으로 이동)
int nextCol = (col + 1) % n;
// 이미 채워져 있으면 아래로 이동if (magicSquare[nextRow][nextCol] != 0) {
nextRow = (row + 1) % n; nextCol = col; } row = nextRow; col = nextCol; num++; } return magicSquare; } public static void printMagicSquare(int[][] magicSquare) { int n = magicSquare.length; System.out.println("마방진 (" + n + "x" + n + "):"); for (int[] row : magicSquare) { for (int num : row) { System.out.printf("%4d", num); } System.out.println(); } } }
Output:
마방진 (5x5): 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
댓글 없음:
댓글 쓰기