2011-09-20 1 views
2

의 문자열 경우 :확인 문자열이 같거나 내가 하나 개의 문자열이 다른과 동일 또는 어쩌면 그것은 아래의 코드와 그것의 일부인지 여부를 확인하려고 다른

import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.util.Scanner; 


public class Comparison { 

    static void compare() throws FileNotFoundException { 

     Scanner queries = new Scanner(new FileReader("./out.txt")); 
     Scanner folks = new Scanner(new FileReader("./tal.txt")); 
     int index1 = 0; 
     while (queries.hasNextLine()){ 
      String check = queries.next(); 

      while (folks.hasNextLine()) { 
       String toCheck = folks.next(); 
       index1 = toCheck.indexOf(check); 
      }//while 
     }//while 

     System.out.println("Result: "+ index1); 
    } 
} 

는하지만이를 얻을 수 아래 오류 :

 
Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Scanner.java:838) 
    at java.util.Scanner.next(Scanner.java:1347) 
    at results.Comparison.compare(Comparison.java:28) 
    at results.Main.main(Main.java:42) 

무엇이 문제인가? 어떻게 작동시킬 수 있습니까?

+1

라인 28은? –

+0

올바른 파일을 참조 했습니까? './ [...] '만으로 classpath 외부의 파일을 참조하는 것은 위험합니다. – home

+0

static void compare() throws FileNotFoundException 파일 참조가 올바른 ... – user758084

답변

1

folks의 초기화는 예를 들면, 외부 루프 안에 있어야 :

 Scanner queries = new Scanner(new FileReader("./out.txt")); 
     int index1 = 0; 
     while (queries.hasNextLine()){ 
      String check = queries.next(); 
      Reader r = new FileReader("./tal.txt"); 
      try { 
       Scanner folks = new Scanner(r); 
       while (folks.hasNextLine()) { 
        String toCheck = folks.next(); 
        index1 = toCheck.indexOf(check); 
        if (index1 >= 0) { 
         // Do something with index1 here? 
        } 
       }//while 
      } finally { 
       r.close(); 
      } 
     }//while 
+0

는 지금은 아래의 오류를 취할 \t at java.io.FileInputStream. (FileInputStream.java:106) \t at java.io.FileInputStream. (FileInputStream.java:66) \t at java.io.FileReader. user758084 @, 난 당신이 것을 얻을 약간 놀랐어요 results.Main.main (Main.java:42) – user758084

+0

에서 \t (FileReader.java:41) results.Comparison.compare에서 \t (Comparison.java:27) 오류가 발생했지만 모든 독자가 가능한 빨리 닫을 수 있도록 코드를 업데이트했습니다. 지금 시도해보십시오. – finnw

+0

지금 일하고 있습니다 .. 정말 고마워요. : P 좋은 하루 보내세요 ... – user758084

2

next()가 아닌 nextLine()을 사용해야한다고 생각합니다.

String check = queries.nextLine(); 

과 : 에서와 같이 기본 구분 기호는 공백입니다

String toCheck = folks.nextLine(); 

때문에 사용자가 파일의 끝 부분에 빈 줄이 (그리고 아마도 다른 것들) 경우,이되지 않을 수도 있습니다 hasNextLine()이 true를 반환했지만 next(). 사용하고있는 다음 *()에 해당하는 hasNext *() 메서드를 항상 사용하십시오. (그 반대도 마찬가지입니다 ;-)).