2013-02-23 9 views
-1

파일에서 명령 줄에 지정된 단어를 검색하려고합니다. 그러나 실행 중이면 아무 것도 표시하지 않습니다. 문제는 무엇이 될 수 있습니까? 여기 내 코드의 일부입니다. 도와 주셔서 감사합니다! 는
파일에서 명령 줄에 지정된 단어 찾기

class ClientHandler extends Thread { 
     private Socket client; 
     private Scanner input; 
     private PrintWriter output; 
     private ArrayList<String> quotes; 
     public ClientHandler3(Socket socket, String file) { 
      client = socket; 
      try { 
       BufferedReader buffer = new BufferedReader(new FileReader(file)); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream())); 
       String line = reader.readLine(); 
       try { 
        int ctr = 0; 
        quotes = new ArrayList<String>(); 
        while(line != null){ 
         quotes.add(ctr, line); 

         ctr++; 
         line = buffer.readLine(); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 


      } catch (FileNotFoundException e1) { 
       e1.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


      try { 
       input = new Scanner(client.getInputStream()); 
       output = new PrintWriter(client.getOutputStream(), true); 
      } 
      catch(IOException e) { 
       e.printStackTrace(); 
      } 
     } 


     public void run(String[] args) { 
      String target; 
      String message = ""; 
       target= args[3]; 
       for(int i = 0; i<quotes.size(); i++){ 
        if(quotes.get(i).toUpperCase().contains(target.toUpperCase())){ 
         output.println(quotes.get(i)); 
        } 
       } 
       output.println("|"); 
      try { 
       if (client != null) { 
        System.out.println("Closing down connection..."); 
        client.close(); 
       } 
      } 
      catch(IOException e) { 
       System.out.println("Unable to disconnect!"); 
      } 
     } 
    } 
+0

고맙지 만 문제가 있다고 생각하지 않습니다. 나는 그것을 시험해 보았다. :) 문제는,'run()'메서드에서, 단어를 검색하는 곳이 있기 때문입니다. –

답변

1

클라이언트는 args[1] (호스트), args[2] (포트)를 읽고,하지만 args[3]는 단어를 검색 할 수 있습니다.

표준 명명 규칙을 따르지 않으므로 코드를 읽기가 어렵습니다. 클래스는 대문자로 시작하지만 메소드는 소문자로 시작합니다. 귀하의 코드는 그 반대입니다.

+0

감사합니다. 미안해, 프로그래밍에 새로운 사람이야. 다음에 그걸 할거야. 'args [3]'에 대해서'String target'에 저장하고'target'을'client' 메쏘드와'clienthandler' 클래스에 전달했습니다. –

+0

나는 그것을 보지 못했다. 그러나 Client() 호출 후 대상은 초기화됩니다. 그래서 클라이언트가 서버로 보낼 때, 그것은 여전히 ​​null입니다. 로컬 변수로 만들고 호스트와 포트처럼'Client()'에서 읽어야합니다. –

+0

감사합니다. 이제'client' 메소드에서'target = args [3];을했습니다. 문제는 이제'clienthandler' 클래스에서'args [3]'을 "전달"하는 것입니다. –

관련 문제