проблема с чтением текстового файла - PullRequest
1 голос
/ 27 января 2011

У меня есть текстовый файл, где у меня есть имена и пароли, разделенные:.

user1:pwd1
user2:pwd2

На странице входа в систему, если пользователь введет правильное имя пользователя и пароль, он приведет вас на страницу приветствия.Но я не получаю это должным образом.Вывод, который я получаю

user1
pwd1
inside try
user1
pwd1
true
welcome user1
user2
pwd2
false
not equal

Мой код ниже.

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.regex.*; 
import com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern;


public class TextFile {

    /**
     * @param args
     */

    public void getNamePwd(String name, String pwd) {
        // TODO Auto-generated method stub
        System.out.println(name);
        System.out.println(pwd);
        String[] splitVals=null;
        try{
            System.out.println("inside try");
            String strLine;
            BufferedReader br = new BufferedReader(new FileReader("D:\\test\\text.txt"));
            while((strLine=br.readLine())!=null){
            splitVals=strLine.split(":");
            for(int i=0;i<splitVals.length;i=i+2){
            System.out.println(splitVals[i].toString());
            System.out.println(splitVals[i].toString());
            String nameUser=splitVals[i].toString();
            String passWord=splitVals[i+1].toString();
            System.out.println(name.equals(nameUser));
            if((name.equals(nameUser))&&(pwd.equals(passWord))){
                System.out.println("welcome"+name);
                }
            else{
                System.out.println("not equal");
            }
            }
            }
        }catch(Exception e){

        }
    }

}

пожалуйста, помогите мне ..

Ответы [ 4 ]

0 голосов
/ 27 января 2011

поставьте перерыв, если ваше условие удовлетворено. Не разрешено продолжать цикл. Если вы поставили тормоз здесь. Вы получили ожидаемый результат.

if((name.equals(nameUser))&&(pwd.equals(passWord))){
                System.out.println("welcome"+name);
                  break;
                }
0 голосов
/ 27 января 2011

Попробуйте сбросить значения nameUser и passWord в конце try ()

как в

nameUser=""; passWord="";

0 голосов
/ 27 января 2011

Ваши печатные заявления неверны. Вот почему вы не можете отладить это правильно.

То, что вы печатаете, не соответствует тому, что вы используете для имени и пароля. Исправьте это и попробуйте распечатать снова.

for(int i=0;i<splitVals.length;i=i+2){
    System.out.println(splitVals[i].toString());
    System.out.println(splitVals[i].toString());
    String nameUser=splitVals[i].toString();
    String passWord=splitVals[i+1].toString();

Однако вам не нужен этот цикл. Вы можете просто использовать:

        String nameUser=splitVals[0];
        String passWord=splitVals[1];
0 голосов
/ 27 января 2011

Я подозреваю, что вы хотите прекратить поиск совпадений по имени пользователя / паролю после того, как вы его нашли ... Для этого вам нужно разорвать цикл при совпадении. Для этого вы делаете следующее:

readLoop:
while((strLine=br.readLine())!=null){

    // ...
    String[] splitVals = strLine.split(":");

    if((name.equals(nameUser))&&(pwd.equals(passWord))){
        System.out.println("welcome"+name);
        break readLoop;
    }

    // ...
}

Кроме того, я не знаю, зачем вам нужен этот цикл:

for(int i=0;i<splitVals.length;i=i+2)

Напомним, что вы читаете файл построчно . То есть разделенный массив будет содержать имя пользователя и пароль текущей строки.

Чтобы напечатать имя пользователя / пароль, вы можете сделать что-то вроде этого:

System.out.printf("Username: %s, Password: %s%n", splitVals[0], splitVals[1]);

Я бы, вероятно, решил это, используя Scanner. Примерно так:

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


public class TextFile {

    public static void main(String[] args) throws FileNotFoundException {

        if (userPassOk("hello", "world"))
            System.out.println("Welcome");
        else
            System.out.println("Get out!");
    }

    private static boolean userPassOk(String user, String pass)
            throws FileNotFoundException {

        Scanner s = new Scanner(new File("test.txt"));
        while (s.hasNextLine()) {
            String[] userPass = s.nextLine().split(":");
            if (userPass[0].equals(user) && userPass[1].equals(pass))
                return true;
        }
        return false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...