2014-12-08 1 views
0

나는 학기에 대한 마지막 평가를하고 흥미롭게도 내가 작성한 코드는 방금 다림질 한 몇 가지 간단한 것 이외의 오류가없는 것으로 보인다. 그러나, 나는 내 머리를 얻을 수없는 마지막 오류가 하나 붙어있다.while 루프 while 루프의 시작으로 돌아 가기?

내가하고있는 프로그램은 숫자를 생성하고 배열에 저장하는 while 루프를 사용하는 난수 생성기입니다. 그러나 두 번째 while 루프는 해당 숫자가 이미 있는지 확인하는 데 사용됩니다 배열이 해당 배열에 이미 있으면이 숫자를 버리고 같은 인덱스에 넣으려면 다른 값을 가져와야합니다. 이 후 배열이 첫 번째 루프의 끝으로 명령을 계속 사용에, 그러나 5 배 (10)의 격자로 인쇄, 그것은 오류와 함께 제공 :

은 분명 보인다
Random50.java:52: error: continue outside of loop 
continue; 
^ 

만큼, I 프로그램을 실행하기 위해 내 코드를 변경하는 방법을 모르는 경우 continue 명령을 사용하여 카운터 변수를 증가시키지 않고 첫 번째 루프의 시작으로 돌아가므로 다른 값을 동일한 인덱스에 다시 저장할 수 있습니다.

import java.util.Random; 
import java.util.Arrays; 

public class Random50 
{ 
    public static void main(String[] args) 
    { 
    // Declare and initalise array 
    int[] random50 = new int[5]; 

    // Declare and initalise counter variable 

    int i = 0; 

    // Declare and initalise repeater variable 

    int r = 0; 

    // Generator while loop 
    while (i < random50.length) 
    { 
     // Generate random number 
     int n = (int) (Math.random() * 999) + 1; 
     // Initalise variables for second while loop 
     int searchValue = i; 
     int position = 0; 
     boolean found = false; 

     // Duplicate while loop 
     while (position < random50.length && !found) 
     { 
      if (random50[position] == searchValue) 
      { 
       found = true; 
      } 

      else 
      { 
       position++; 
      } 

     } 

     // Return to first loop, determine if duplicate to return to the start of the loop early 
     if (found); 
     { 
      continue; 
     } 

     // Store value into array 
     random50[i] = n; 

     // Print value and add to counter variable 
     System.out.print(random50[i] + " "); 
     r++; 
     // reset counter variable to maintain grid 
     if (r == 5) 
     { 
      System.out.println(""); 
      r = 0; 
     } 

     i++; 
    } 
} 

} 그래서

, 내가 어떻게이 일을하거나 즉, 첫 번째 루프 중간 루프의 시작으로 돌아가 계속받을 수 있나요?

답변

1

문제로 인해 아마 사고로 배치 사용되지 않는 ;에 즉시 종료 당신의 while() 루프 : 그래서 전체 루프 몸에 상관없이에게, 정확히 한 번만 가장 가능성이 최적화 될 조건을 (실행됩니다

while (i < random50.length); 

을 아웃).

이 문제가 해결되면 continue;을 사용하면 예상대로 작동합니다.

편집 : 더 아래로 아래

같은 문제 : 당신은 항상이 괄호 안에 다음 continue;을 실행하는 것입니다, 그래서 코드는 아래에 도달 할 수 없을

if (found); 

때문에이 라인에.

+0

더 이상 오류가 계속되지 않습니다. 배열에 값을 저장할 때 컴파일 오류가 발생합니다. 즉, random50 [i] = n; 값이 도달 할 수 없습니다 – SIHB007

+0

@ SIHB007 다시 같은 문제가 발생합니다. 제 편집을 참조하십시오. – Mario