2013-06-13 2 views
-2

나는 을 스캔하여 내 자신과 동일한 두 개의 연속 된 단어를 찾습니다. 내가 찾으면 창을 띄울거야. 하지만 난 일하게 만들 수 없어. 나는이 문제가 코드의이 부분에 있다고 확신한다. 나는 어떤 초보자라도 많이 들었을 테니 Java에 초보자입니다. 이 파일에서 데이터를 읽으려면텍스트 파일에서 문자열 검색하기

public void readFile(String a, String b){ 
    s=new Scanner("userDataStorage.txt"); 
    while (s.hasNext()){ 
     String u= s.next(); 
     String p=s.next(); 
     if(a==u&&b==p){ 
      l.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      l.setSize(400,300); 
      l.setVisible(true); 
     } 
    } 
} 
+2

사용한다 '(a.equals을 (비교해야하는 경우 u) && b.equals (p))'대신'(a == u && b == p)' –

+1

W 모자가 당신의 코드에서 '나는'어떤 오류가 있습니까? –

+0

변수 u와 p는 프로그램을보다 효율적으로 만들기 위해 while 루프 외부에서 선언되어야합니다. –

답변

4

그때는 아마 원시 데이터를 스캔 달리 스캐너는 단지 파일에 경로로, "userDataStorage.txt"을하지 취급

new Scanner(new File("userDataStorage.txt")); 

사용해야합니다. 또한

당신이 문자열을 비교하면 다음 use equals method instead of == operator

if (a.equals(u) && b.equals(p)) 
+2

OP는 루프의 반복마다's.next()'를 두 번 호출합니다. 이것은 파일의 끝에 도달 할 때 깨질 가능성이 있습니다. –

+0

@HenryKeiter OP 문자열이 쌍으로 저장되어 있다고 가정합니다. 따라서 hasNext가 true를 반환하면 두 개의 요소가 더 있음을 의미합니다. 그러나 그가하지 않으면 당신은 절대적으로 옳습니다. – Pshemo

0

당신이 문자열 사용

a.equals(p) && b.equals(p) 

또는

a.equalsIgnoreCase(u) && b.equalsIgnoreCase(p) 
관련 문제