解决!
我有一种作业,我有一个文件,我有这样的用户名和密码:
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");
}
答案 0 :(得分:0)
你不应该比较两张地图。相反,一旦您拥有存储在文件中的所有值,就比较地图中的值:
String passwordInFile = map.get(user)
if (passwordInFile != null && passwordInFile.equals(pass)) {
System.out.println("True");
} else {
System.out.println("False");
}