2013-07-26 2 views
0

그래서 사용자가 쉼표를 사용하지 않고 숫자 1-4 만 입력하고 있는지 확인합니다. 예 : 1,2,3,4 또는 2,1,4,3. 사용자가 올바른 정보를 입력했는지 확인하기 위해 while 루프를 포함 시켰습니다. 나는 for 루프에 관해서 혼란스러워진다. 왜냐하면 나는 i와 j를 사용하여 배열 내에서 배열에 접근하기 위해 for 루프를 추가로 가질 필요가 있는지 확신 할 수 없기 때문이다. 나는 정말로 혼란스럽고 나는 어떤 종류의 도움을 구하고있다. 나는 현재 파이썬에서의 경험이있다.중첩 된 루프에서 반복을 계속하면서 while 루프를 깨는 방법

while 루프에서 값을 배열로 입력 할 때 사용자가 다음 행의 값을 묻는 메시지를 반환하면 for 루프의 초기화 및 업데이트가 다시 시작된다는 것을 알고 있습니다.

또한 if 문을 다음과 같이 변경하려고 시도했습니다. if (row1Values4x4.charAt(k) > '0' && row1Values4x4.charAt(k) < '5') { 그러나 for 루프가 내 1- 루프의 범위를 벗어나는 값을 찾을 때 루프를 벗어나기를 원하기 때문에 의미가 없습니다. 4.

오류가 발생하지 않으며 원하는대로 작동하지 않습니다.

import java.util.Scanner; 

공용 클래스 sudokuPractice는 {

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    int[][] fourArray = { {0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,0,0,0} }; 
      int row = 1; 
      int k = 0; 
      while (row < 5) 
      { 
       String row1Values4x4 = "-1"; 
       boolean done = false; 
       while (!done) 
       { 
        Scanner firstRow4x4 = new Scanner(System.in); 
        System.out.println("Please enter four values using commas for row " + row); //this needs to loop 
        row1Values4x4 = firstRow4x4.next(); 
        row1Values4x4 = row1Values4x4.replaceAll(" ",""); //this is in case user enters numbers with spaces 
        if (row1Values4x4.length() == 7) { 
         for (k = 0; k < row1Values4x4.length();k++) { 
           if (row1Values4x4.charAt(k) < '0' && row1Values4x4.charAt(k) > '5') { 
            done = true; 
           } //else { 
           //} 
          } 
        } 
       } 
       String strArray[] = row1Values4x4.split(","); 
       int arraySidesInteger[] = new int[strArray.length]; 
       for (int i = 0; i < strArray.length; i++) { 
        arraySidesInteger[i] = Integer.parseInt(strArray[i]); 
       } 
       fourArray[row-1] = arraySidesInteger; 
       for (int i = 0; i < fourArray.length; i++) { 
        for (int j = 0; j < fourArray.length; j++) 
         System.out.print(fourArray[i][j] + " "); 
        System.out.println(); 
       } 
       row++; 
       k++; 
       } 
} 

}

// 난 내 루프의 초기화 및 업데이트를 유지하려고했기 때문에 정수 k에 포함되어 있습니다.

+1

어디에서 휴식할까요? – Veera

+0

@Veera 나는 그것을 시도했다. didnt는 일한다. =/당신의 논리를 봅니다. 나는 다른 말에서 특히 같은 것을 생각하고 있었다. – Brandon

답변

0

라벨을

보기를 사용하는 경우

int row = 1; 
    int k = 0; 
    String row1Values4x4 = "-1"; 
    int[][] arraySidesInteger = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }; 

    while (row <= 4) { 

     boolean done = false; 

     while (!done) { 

      Scanner firstRow4x4 = new Scanner(System.in); 
      System.out.println("Please enter four values using commas for row " + row); // this needs to loop 
      row1Values4x4 = firstRow4x4.next(); 
      String[] values = row1Values4x4.split(","); 

      for (int i = 0; i < values.length; i++) { //Logic to validate the value 

       if (Integer.parseInt(values[i]) < 0 
         || Integer.parseInt(values[i]) > 4) { 
        System.out 
          .println("You have entered the value which not fit in the boundary.Please Try again."); 
        done = true; 
        break; 
       } 
      } 

      if (done) { // Loop again to get the row value correctly. 
       done = false; 
       continue; 
      } 

      //Adding the value to row 
      for (int i = 0; i < values.length; i++) { 
       arraySidesInteger[row - 1][i] = Integer.parseInt(values[i]); 
      } 

      row++; 
      done = true; 

     } 
    } 

    //Prints the array 
    for (int i = 0; i < arraySidesInteger.length; i++) { 
     for (int j = 0; j < arraySidesInteger.length; j++) 
      System.out.print(arraySidesInteger[i][j] + " "); 
     System.out.println(); 
    } 

} 
+0

그것은 굉장했다. 정말 고맙습니다. 루프에 부울 문을 사용하는 방법에 대해 더 자세히 알아야합니다. 나는 그들이 그렇게 유용하다는 것을 몰랐다. – Brandon

0

루프의 모든 수준의 실행을 중단하기가 매우 쉽다 {이

공공 정적 무효 메인 (문자열 []에 args)를 시도하십시오 수 예 :

int count=0; 

A: while(true){ 
    while(true){ 
     System.out.println(count++); 
     if(count==10){ 
      break A; 
     } 
    } 
} 

첫 번째 루프는 A 코드 블록의 실행이 중지되어 으로 표시됩니다.