2011-09-30 3 views
-3
import java.io.*; 
public class Magic{ 

    static final int maxsize = 50; 

    public static void main (String [] args) throws IOException{ 

     int i, j, k, l, n, key; 
     boolean n_ok; 
     String line; 
     int [] [] square = new int [maxsize] [maxsize]; 

     BufferedReader KeybIn = new BufferedReader(new InputStreamReader(System.in)); 

     try{ 


     System.out.print("Size of square? "); 
     line = KeybIn.readLine(); 
     n = Integer.parseInt(line); 

     n_ok = (1<=n) & (n<=maxsize+1) & (n%2==1); 


     if (n_ok){ 


      for (i=0;i<n;i++) 
       for (j=0;j<n;j++) square[i][j] = 0; 
      square[0][(int)(n-1)/2] = 1; 

      key = 2; 
      i = 0; 
      j = (int)(n-1)/2; 
      while (key <= n*n){ 

       k = i - 1; 

       if (k < 0) k = k + n; 
       l = j - 1; 

       if (l < 0) l = l + n; 

       if (square[k][l] != 0) i = (i+1) % n; 

       else { i = k; j = l; } 
       square[i][j] = key; 
       key = key + 1; 
      } 


      System.out.println("Magic square of size " + n); 

      for (i=0;i<n;i++) 

      { 

       for (j=0;j<n;j++) 
        System.out.print("\t"+square[i][j]); 
       System.out.println(); 
      } 
     }  
     }catch (NumberFormatException e){ 

     System.out.println("Error in number, try again."); 

     } 

    } 
} 

그럼 어떻게 다시 시도 하시겠습니까? 그냥 그때 .. 만약 내가 y를 입력하면 사용자에게 사각형의 크기를 다시 물어볼 것입니다. 문자 n이 나오면 빠져 나올 것입니다. 이것은 마법의 사각형을위한 것입니다.루프에서 코드를 실행하고 사용자에게 "다시 시도 하시겠습니까?"라고 묻습니다.

+0

while while 루프를 사용할 수 있습니다. – Ankur

+1

Welcome to Stack Overflow! 이것은 포럼이 아닙니다. __이 질문과 답변 사이트이며, 귀하의 게시물은 정말로 질문이 아닙니다. [실제 질문에는 답변이 있지만 항목이나 아이디어 나 의견은 없습니다] (http://blog.stackoverflow.com/2011/01). /real-questions-have-answers/).__ [자세한 내용은 FAQ를 읽어보십시오.] –

+0

나는 동의에 동의하지 않는다. 나는 이것이 진정한 질문이라고 생각하며 진정한 대답을 가지고있다. –

답변

-1

Scanner 클래스를 확인하십시오.

+0

이것은 이론적으로 질문에 대답 할 수 있지만 여기에 대답의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 바람직합니다 (http://meta.stackexchange.com/q/8259). –

3
String tryAgain = "y"; 
do 
{ 
    // you code 

    System.out.println("Try again? enter \"y/n\"."); 
    tryAgain = System.in.readLine(); 

} 
while(!tryAgain.equals("n")); 
+0

어디에서이 코드를 넣을 수 있습니까? –

+0

@JefframCatapang do-while 쇼 랩 코드에 있습니다. –

+0

@ JefframCatapang offtopic,하지만 주된 방법으로 모든 것을하는 것은 좋은 디자인이 아닙니다. 적어도 atleast를 몇 가지 방법으로 분할하십시오. –

0

은 별도의 방법으로 자신의 마법 사각형을 계산 코드를 넣어, 예를 들면, 사용자까지 방법은 N을 누르면 것을 호출하는 while 루프에 입력 읽는 코드를 가지고있다.

0

while 루프를 사용하여 try/catch 문을 마무리하십시오.

while(not true) { 
    do foo() 
} 
관련 문제