2014-12-10 5 views
0

마법 사각형에 관한 과제가 있습니다.매직 스퀘어 선호 출력

하지만 다시 작성해야합니다.

Scanner input = new Scanner(System.in); 

    System.out.print("Enter a number: "); 
    int num= input.nextInt(); 

    //Number must be ODD and not less than or equals to one to continue 
    while((num%2==0)||(num<=1)){ 
     System.out.println("Enter a valid number: "); 
     num= input.nextInt(); 
    } 



    int[][] magic = new int[num][num]; 

    int row = num-1; 
    int col = num/2; 
    magic[row][col] = 1; 

    for (int i = 2; i <= num*num; i++) { 
     if (magic[(row + 1) % num][(col + 1) % num] == 0) { 
      row = (row + 1) % num; 
      col = (col + 1) % num; 
     } 
     else { 
      row = (row - 1 + num) % num; 
      // don't change col 
     } 
     magic[row][col] = i; 
    } 

    // print results 
    for (int i = 0; i < num; i++) { 
     for (int j = 0; j < num; j++) { 
      if (magic[i][j] < 10) System.out.print(" "); // for alignment 
      if (magic[i][j] < 100) System.out.print(" "); // for alignment 
      System.out.print(magic[i][j] + " "); 
     } 
     System.out.println(); 
    } 


이 현재 내 프로그램의 출력은 다음과 같습니다 :

My Program output

내 예상/원하는 출력 :

enter image description here

순간에 내 코드입니다

내가 필요로하는 것은 시작 번호 (1)가 x 열의 상단 중간에 있고 그 다음에 패턴이 위로 올라간다는 것입니다.

답변

0

시작 번호가 위쪽 요소 여야 만 누락 된 유일한 조건이면 인쇄 결과 행 루프를 역순으로 반복하면 문제가 해결됩니다. 따라서 행을 0, 1, 2, ..., n 순으로 인쇄하는 대신 행을 n, n-1, n-2, ..., 1, 0 순으로 인쇄하십시오. 동일한 로직을 열에 적용하여 목표 출력과 동일한 출력을 얻습니다.

+0

내가 아직 정교한 신입생이기 때문에 정교하게 만들 수 있습니까? – repsajznav