2014-12-14 6 views
1

사용자가 배열에 저장되는 10 개의 문자열과 검색 키를 입력하는 코드 작업을하고 있습니다. 코드는 검색 키를 기반으로 선형 검색을 실행해야합니다. 지금까지 이것이 내가 얻은 것입니다 :Java에서 문자열 선형 검색

import java.io.*; 
class linstring 
{ 

    String array[] = new String[10]; 
    String a = new String(); 
    public void linsearch(String string[], String search) 
    { 
     string = array; 
     search = a; 

     int i; 
     int flag = 0; 
     for(i = 0; i<10; i++) 
     { 
      if (search.equals(string[i])) 
      { 
       flag = 1; 
       break; 
      } 

     } 
     if (flag ==1) 
     { 
      System.out.println("Word found at position " +(i+1)); 
     } 
     else 
     { 
      System.out.println("Word not found."); 
     } 
    } 

    public static void main(String args[])throws IOException 
    { 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     linstring obj = new linstring(); 
     System.out.println("Enter any 10 words."); 

     String enter [] = new String[10]; 
     int i; 
     for (i = 0; i<10; i++) 
     { 

      enter[i] = br.readLine(); 

     } 
     System.out.println("Enter word to be searched."); 
     String search1 = br.readLine(); 
     obj.linsearch(enter, search1); 
    } 
} 

컴파일 오류가없고 런타임 오류가 없습니다. 그러나 거대한 논리 오류가 있습니다. 배열에있는 요소를 검색하면 검색에 실패했다고 표시됩니다. 어떻게 해결할 수 있습니까? TIA.

+1

이것이 숙제가 아니라면 원시 배열을 잊어 버리고 대신 HashMap/HashSet을 사용하는 것이 좋습니다. 빠르고, 코드가 적으며, 버그가 적습니다. – midor

+0

나는 본다. 좋아, 나는 분명히 HashMap을 사용해 볼 것이다. 고맙습니다! –

답변

2

제거 이러한 라인 :

string = array; 
search = a; 

편집 :이 두 라인은 빈 문자열 배열 (array)과 빈 문자열 (a)에 search의 기준에 string의 기준을 설정합니다. 즉, stringsearch은 이제 arraya과 같은 내용을 갖습니다. 이는 비어 있습니다.

+0

나는 그들이 절대적으로 아무것도하지 않는다는 것을 깨닫는다. 나는 그들을 제거했고 그것은 현재 시계처럼 작동한다. 고맙습니다! 나는 이것을 9 분 안에 대답으로 표시하고있다. –

+0

@ codefoodgirl_99 예 그들은 ** ** ** 무언가를합니다 (이것이 검색이 작동하지 않는 이유입니다). –

+0

오. 나는 그들이 한 일을 깨닫는다. 나는 그들을 제거했다. 감사! –

0

확인 다음 줄은 :

string = array; 

그것은 반대해야한다.