2013-08-30 2 views
0

이름 배열 검색 방법을 쓰려고합니다. '*'를 입력 된 문자열의 첫 번째 문자 또는 그 자체로 입력하여 검색을 종료 할 수 있습니다. 논리가 나를 벗어나고있는 것처럼 보입니다. 나는 무엇을 잘못하고 있는지 모르겠다. 메서드는 배열 요소 번호가 있으면이를 반환해야하고, 그렇지 않으면 -1을 반환해야합니다. 인덱스 0에서 어떤 문자가 없기 때문에Java에서 종료 문자가있는 배열의 이름 검색

public int searchNames(String [] names) throws IOException{ 
     Scanner keyboard = new Scanner(System.in); 
     String line = ""; 
     while (line.charAt(0) != '*'){ 
      System.out.print("Enter a name to be searched, and an '*' to exit: "); 
      line = keyboard.nextLine(); 
      for (int i = 0; i<name.length; i++){ 
       if (names[i].compareTo(line) == 0){return i;} 
      }//end for loop 
     }//end while loop 

     return -1; 

    }//end searchNames 
+1

그래서 문제가 무엇입니까? –

+0

일단 그가 'while' 루프를 친다면 내 생각에 그는'IndexOutOfBoundsException'을 얻고있는 것 같습니다. 대신 –

답변

2
String line = ""; 
while (line.charAt(0) != '*'){ 

java.lang.StringIndexOutOfBoundsException 발생합니다. 당신이 "*"취소 할 수있는 검색으로 시작하는 문자열을 원하는 경우

사용

String line = ""; 
while (!line.startsWith("*")) 
+0

@DennisMeng'startWith()'? –

+0

누군가가 "* joe"로 이름을 입력 한 경우이 작업을 수행 할 수 있습니까? – StillLearningToCode

+0

내부 및 외부 while 루프가 있어야합니까? 하나는 그 자체에 의해 * 확인하고, 다른 하나는 char (0)에서 점검 할 것인가? – StillLearningToCode

0

또한

String line = ""; 
while(!line.startsWith("*")) 

를 사용할 수 있습니다.