2012-02-13 3 views
0

나는 txt 파일을 읽고 특정 단어가 언급 된 횟수를 세는 간단한 Java 프로그램을 작성 중입니다. 이것은 아래에있는 것입니다. 컴파일되고 잘 실행되지만 수천 개로 잘 돌아갈 때 대답을 0으로 유지합니다 ...단어가 언급 된 횟수

이 경우에 "via via am"이 이 파일 ...

/*AUTHOR Yun Lee 
Finding out the number of tweets per day*/ 

import java.io.*; 
import javax.swing.*; 
import java.util.Scanner; 

class tweetnumber 
{ 

public static void main(String args[]) 
{ 
    try 
    { 

     FileInputStream fstream = new FileInputStream("tacobell.23jan2012.txt"); 
     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 

     int counter1 = 0; 
     String s = "am via"; 

     while ((strLine = br.readLine()) != null) 
     { 
      System.out.println (strLine); 
      if (strLine.contains(s)) 
      { 
       counter1++; 
      } 

     } 
     in.close(); 
     System.out.println("There were " + counter1 + " messages in the AM of this day"); 
    } 

    catch (Exception e) 
    { 
     System.err.println("Error: " + e.getMessage()); 
    } 

} 
} 
+0

파일이'println' 명령문에 의해 인쇄됩니까? 중단 점을 설정하고'strLine'을 검사하여 "am via"가 있는지 확인하려고 했습니까? – Blorgbeard

+1

에 숙제로 태그를 지정해야합니까? 그건 그렇고, 찾고있는 끈이 연속으로 두 번 나타나면 어떻게 될까요? – jambriz

+0

''via via "는 하나의 단어로만되어 있습니까? 아니면 "am"과 "via"라는 단어가 있는지 찾으려고합니까? –

답변

0

DataInputStream이 파일을 바이트에서 문자로 올바르게 변환하지 않았을 수 있습니다. 이를 제거하고 FileInputStream을 InputStreamReader 생성자에 전달하십시오.

1

FileInputStream는 화상 데이터로서 원시 바이트 스트림을 판독하는 것을 의미한다

FileInputStream에 대한 supposed to be used이다. 문자 스트림을 읽으려면 FileReader 사용을 고려하십시오.

문자를 읽으려고하기 때문에 파일을 다르게 열어보십시오. 나는 그것을 테스트

File f = new File("tacobell.23jan2012.txt"); 
BufferedReader br = new BufferedReader(new FileReader(f)); 
1

그것은 ANSI로 인코딩 된 텍스트 파일 작동 : 당신은 시도 할 수 있습니다. 그런 다음 Unicode으로 인코딩 된 동일한 파일에서 "fishy"와 같은 추가 문자를 하나 시도했습니다. ♣, 거기에갔습니다 : 0 입력 파일이나 읽는 방법을 확인하십시오.

시도 this post here.

+0

정말 고마워요 !! 유니 코드에서 ANSI로 변경하려고 시도하고 완벽하게 작동합니다! 매우 감사합니다!! –

+0

내가 도울 수있어서 기쁩니다. 문제가 해결되면 대답의 왼쪽에있는 녹색 눈금을 사용하여 문제를 수락 할 수 있습니다. –

관련 문제