Java,将键盘输入值与file.txt值进行比较

时间:2015-11-21 12:16:17

标签: java file dictionary hashmap

解决!

我有一种作业,我有一个文件,我有这样的用户名和密码:

user1 password1

user2 password2

user3 password3

我需要使用FileInputStream类,我还需要键盘输入用户名和密码,并检查它是否已经存在(每个用户名必须匹配密码,在线)。我决定使用Map,但是....如果你看一下我的while循环,我试着分成键和值。我还创建了存储键盘输入的map2,以及存储拆分键和值的map。

我的麻烦就在这里:如果我输入用户名:user1,密码:password1,那条件if(map.equals(map2))将返回true。但是如果我为username:user2和password:password2写,“if”将返回false,即使我的文件中已存在user2和password2。

提示:我无法覆盖equals()和hashCode(),因为我的主类中没有任何类。

public class ex_2 
{
public static void main(String args[]) throws IOException
{
    InputStreamReader reader = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(reader);
    System.out.print("username: ");
    String user = br.readLine();
    System.out.print("password : ");
    String pass = br.readLine();

    FileInputStream input= new FileInputStream("file.txt");
    BufferedReader read= new BufferedReader(new InputStreamReader(input));


    Map<String, String> map = new HashMap<String,String>();
    Map<String, String> map2 = new HashMap<String,String>();
    map2.put(user, pass);
    System.out.println(map2);
     String line;
     while((line = read.readLine()) !=null)
     {
        String[] split = line.split("\t\t");
        map.put(split[0], split[1]);

        if(map.equals(map2))
        {
            System.out.println("True");
        }
        else
        {
            System.out.println("False");
        }
     }
     System.out.println(map);
     read.close();

@SMA的代码

     String line;
     while((line = read.readLine()) !=null)
     {
            String[] split = line.split("\t\t");
            map.put(split[0], split[1]);
            String passwordInFile = map.get(user);
             if (passwordInFile != null && passwordInFile.equals(pass)) 
                 System.out.println("True");
             else 
                 System.out.println("False");
     }

1 个答案:

答案 0 :(得分:0)

你不应该比较两张地图。相反,一旦您拥有存储在文件中的所有值,就比较地图中的值:

 String passwordInFile = map.get(user)
 if (passwordInFile != null && passwordInFile.equals(pass)) {
     System.out.println("True");
 } else {
     System.out.println("False");
 }