2014-10-23 4 views
0

텍스트 입력을 읽고 "userInfo.txt"파일의 텍스트와 비교하는 코드를 얻으려고합니다. 나는 그것을 할 수 있다고 생각한다; 그러나 비교 결과는 출력되지 않습니다.내 프로그램에서 Java로 파일을 읽으려고 시도했습니다.

아래에있는 내 코드를 확인하십시오 :

String line = ""; 
String data = ""; 
boolean result = false; 

BufferedReader inFile = new BufferedReader (new FileReader ("userInfo.txt")); 
try{ 
    while((line = inFile.readLine()) != null) 
    data += "\n" + line; 
    inFile.close(); 
} catch(Exception x){}; 

String [] allData = {data}; // saving the txt inside allData 

System.out.println("Enter UserName: "); 
String userName = kb.nextLine(); 

System.out.println("Enter Password: "); 
String pass = kb.nextLine(); 

try{ 
    //read user name and password then compairing it to the user and pass insde the file 
    for(int i = 0; i < allData.length - 1; i++) 
    {// checking userName 

    if(allData[i].equalsIgnoreCase(userName)) 
     result = true; 
    else 
     System.out.println(result +" Wrong userName"); 

    // checking password 

    if(allData[i + 1].equals(pass)) 
     System.out.println("Welcome " + userName); 
    else 
     System.out.println(result +" Wrong password"); 
    } 
} catch (Exception x){}; 
+0

음에, 당신은, 당신이 사용자 이름과 암호를 가지고처럼 보이지만 사실은 2 개 개의 파일을 비교하는 코드를 볼 수 없습니다 모든 텍스트가 데이터에 저장되어 있습니까? 나는 당신이 단지 그것을 사용자 이름과 암호와 비교하는 것을 본다. 말하자면,이 텍스트 파일에는 무엇이 들어 있을까요? 나는 allData [i] .equalsIgnoreCase (userName)를 두 번 깜박이게하기 때문에 묻습니다. – DreadHeadedDeveloper

+0

입력 파일에 두 줄이있는 것 같습니다. 첫 번째 줄에는 사용자 이름이 있고 두 번째 줄에는 암호가 있습니다. 그게 사실이야? – Denise

+0

당신은 어떤 결과물을 얻고 그것이 원하는 것과 다른 점은 무엇입니까? –

답변

1

배열 allData에는 txt 파일의 전체 내용 인 1 개의 문자열 만 포함되어 있기 때문입니다.

변경

String [] allData = {data}; 

String [] allData = data.Split("\\n"); 
+1

감사합니다. – MedoBan

0

나는 문제가이 라인에 생성 생각 :

String [] allData = {data}; 

그 라인에서, 당신은 전체를 가지고 하나의 요소로 배열을 생성 파일의 텍스트.

대신,이 같은 일을 고려해

List<String> allData = new ArrayList<String>(); 
try{ 
    while((line = inFile.readLine()) != null) { 
    allData.append(line); 
    } 
} catch(Exception x){} 
finally { 
    inFile.close(); 
} 

다음 당신은 당신이 찾고있는 라인을 얻을 수 allData.get (i)를 사용할 수 있습니다. 그런데

, 코드 검토의 방법으로 노트의 몇 가지 : 그것은 쉽게도 읽을 수 있습니다 등

  1. 항상 {사용} if를 들어, while은 '당신이 그 가능성이 적습니다 나중에 어떤 것이 블록의 일부로 실행되는지 여부에 대해 실수를 할 것입니다.
  2. 예외를 삼키지 마십시오 (catch(Exception e) {}). 실수를했거나 잘못된 입력을했는지 알 수 없으므로 디버그하기가 더 어려워집니다.
  3. inFile.close()finally 블록에 속합니다. try 블록을 벗어나는 예외가 발생하더라도 파일 핸들을 닫고 싶기 때문입니다.
+0

큰 노트를 보여줍니다. 고마워요. – MedoBan

관련 문제