2013-10-29 2 views
0

public static boolean linearSearch(int[] array, int target) :이 메서드는 의 배열과 의 배열을 입력으로 사용해야합니다. 요소 대상이 인 경우 사실 을 반환해야합니다. 을 배열 에 입력하십시오. 어레이 의 각 요소를 한 번에 하나씩 검사하여 배열의 시작부터 끝까지배열의 요소를 검색하는 부울

까지 차례로 검사해야합니다. 요소가 이 아닌 경우 메서드는 거짓 을 반환해야합니다.

public class ArrayUtilities{ 
    public static void main(String[] args){ 
    int[] array1= {1,2,3,4,5}; 
    int target1 = 2; 
    linearSearch(array1,target1); 
    } 

    public static boolean linearSearch(int[] array, int target){ 
     int x=0; 
     for(int i = 0; i< array.length; i++){ 
     if(array[i] == target){ 
      return true; 
    } 
     else{ 
      x++; 
     } 
     } 
     if(x == 0){ 
     return false; 
     } 
     return linearSearch;//**error here!** 
} 
} 

다음은이 질문에 대해 작성한 코드입니다. 그러나 return linearSearch에서 실수를합니다. 이유를 이해하지 못합니다. 미리 감사드립니다!

실수는 말한다 : 기호 : 변수 linearSearch 위치 : 클래스 ArrayUtilities

return 문이 후 부울 값 또는 변수가 필요
+2

? 어떤 오류입니까? 망치는 뭐야? 무슨 사슬? – Taylor

+0

그것은 이상한 오류 메시지가 아닙니다. linearSearch가 무엇인지 알지 못합니다. – Cruncher

답변

2

일치하는 항목을 발견하면 즉시 반환하는 것이 좋습니다.

그러나 x 변수의 목적을 이해하지 못합니다. 완전히 제거하고 if에서 else을 제거합니다.

for 루프를 완료하면 찾을 수 없으므로 false을 바로 반환 할 수 있습니다. return linearSearch 줄은 아무 의미가 없습니다. for 루프가 끝나면 한 줄로 끝납니다 : return false;.

+0

"배열의 각 요소를 한 번에 한 번에 검사하면됩니다."필자는 모든 값을 반복해야합니다. – user2826974

+0

답장을 보내 주셔서 감사합니다. 정말 도움이됩니다. – user2826974

+0

하지만 일단 발견하면, 나머지 내용과 상관없이 항상 '사실'이 될 것이므로 이미 그랬던 것처럼 거기에서 멈추고 '참'을 되돌릴 수 있습니다. – rgettman

0

. linearSearch (매개 변수없이)는 그 중 하나가 아닙니다.

0

반환 할 항목을 결정하십시오. 즉, 반환합니다. 즉, 부울, 또한 선형 검색을 반환하려고하는 경우, 그게 무엇인지 모릅니다. 그것은 진실이거나 거짓이어야합니다.

1

이유는 "else"가 끝에 오는 이유는 무엇입니까? 루프가 일치하는 항목을 찾지 않고 끝나면 false를 반환하고 일치하는 항목을 찾을 때마다 true를 반환합니다. 내 말은, 당신이 일치하는 것을 발견하자마자 true를 반환합니다. 아무것도 찾지 않고 반복을 끝내면 false를 반환합니다.

public static boolean linearSearch(int[] array, int target){ 
     for(int i = 0; i< array.length; i++){ 
     if(array[i] == target){ 
      return true; 
    } 
    } 
    return false; 
    } 
0
public boolean check; 
public static boolean linearSearch(int[] array, int target){ 
    check = false; 
    for(int i = 0; i < array.length; i++){ 
     if(array[i] == target){ 
      check = true; 
     } 
    } 
    return check; 
} 
어떤 실수
+4

OP 솔루션의 문제점을 설명하지 않은 코드는 오히려 도움이되지 않습니다. 그는 당신이하는 일을 이해하지 못하거나 그냥 직접 복사 할 것입니다. 어느 쪽도 OP에 가장 좋은 관심이 없다. – Cruncher

관련 문제