2013-11-03 1 views
0

에 대한 TXT 파일을 검색하는 동안 : 나는 단어 '마리아'의 txt 파일을 스캔 코드를 작성하기 위해 노력하고있어논리 오류 나는이 포함 된 txt 파일이 특정 단어

Mary had a little lamb little lamb 
little lamb. Mary had a little lamb. 
That's all? Did the lamb follow Mary 
wherever Mary went? 

, 표시되는 횟수를 계산 한 다음 그 수를 인쇄합니다.

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

class Test { 
    public static void main(String[] args) { 
     int count = 0; 

     Scanner reader = new Scanner("test.txt"); 

     while (reader.hasNextLine()) { 
      String nextToken = reader.next(); 
      if (nextToken.equals("Mary")) 
       count++; 
     } 

     System.out.println("The word 'Mary' was found on " + count + " lines."); 
    } 


} 

코드를 컴파일하는 동안

, 나는 "The word 'Mary' was found on 0 lines."

여기에 무슨 일이 일어나고 있는지 어떤 생각을 인쇄 시스템으로, 잘못된 입력을 받고 계속?

+3

'equals()'대신에 contains()' –

답변

4

실제로 파일을 읽지 않습니다.

스캐너를 new Scanner(new File("test.txt"));으로 선언해야합니다. 그렇지 않으면 스캐너는 문자 그대로 "test.txt"라는 문자열을 Mary로 검색합니다.

new Scanner("test.txt")new Scanner(new File("test.txt"))을해야한다에

+0

빠른 응답을 보내 주셔서 감사합니다! 나는 그 수정안을 만들려고했지만 시스템이 "보고되지 않은 예외 FileNotFoundException을 던집니다. 잡히거나 던져 져야합니다."라는 오류가 발생했습니다. 오류 :/ – user2893128

+0

@ user2893128 파일이 올바른 위치에 있습니까? –

+0

@ user2893128 텍스트 파일 (예 : "C : \\ Users \\ User \\ Desktop \\ test.txt")에 대한 전체 경로를 제공하거나 텍스트 파일을 Test.class와 같은 위치로 이동할 수 있습니다 파일 – vandale

0

vandale가 올바른지 다른 생성자에 대한 Scanner 문서를 참조하십시오.

그러나 "Mary"라는 단어가있는 줄 수를 찾으려면 코드를 약간 변경해야합니다. 주석이있는 줄을보십시오 :

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

class Test { 
    public static void main(String[] blargs) { 
     int count = 0; 

     Scanner reader = new Scanner(new File("test.txt")); 

     while (reader.hasNextLine()) { 
      String nextToken = reader.nextLine(); // nextLine() instead of next(). 
      if (nextToken.contains("Mary")) // contains() instead of equals() 
       count++; 
     } 
     System.out.println("The word 'Mary' was found on " + count + " lines."); 
    } 
} 
관련 문제