2014-10-23 2 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 содержит только 1 строку, которая представляет собой весь контент вашего txt-файла.

Изменить

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

Смежные вопросы