qq_42230727
qq_42230727
采纳率33.3%
2019-04-01 10:48 阅读 377
已采纳

为什么我这个程序输入正确的验证码,用equals会出现验证失败,用contains才会验证成功?

public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("work-code\data.txt"));
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 3; i++) {
System.out.println("录入验证码:");
String s = sc.next();
bw.write(s);
bw.newLine();
}
bw.flush();
bw.close();
System.out.println("输入正确的验证码:");
String confirmation = sc.next();
BufferedReader br = new BufferedReader(new FileReader("work-code\data.txt"));
String len = null;
ArrayList list = new ArrayList<>();
while ((len = br.readLine()) != null){
list.add(len);
}
br.close();
if (list.contains(confirmation)){
System.out.println("验证成功");
}else {
System.out.println("验证失败");
}

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    GzlAndy GzlAndy 2019-04-01 15:00

    你用Arraylist对象和String对象使用equal()方法比较? 根本就不是一个类型的呀

    点赞 评论 复制链接分享
  • bobo415 bobo415 2019-04-01 11:19

    contains 是包含
    equals是比较,检查下是不是前后空格导致的比较失败

    点赞 评论 复制链接分享
  • qq_43486639 Rising-Moon 2019-04-01 13:55

    因为contains是判断其中有没有包含目标字符串,只要其中有目标字符串就会返回true。
    equals是比较,只有相等才返回true。
    并且,对于字符串调用equals是比较两个字符串内容是不是相符,但对于其他类的对象调用equals不仅比较两者是否相同,还会比较他们的hashcode,即两者为同一个对象才会返回true。
    我对于这道题的理解是,本地保存的验证码有很多段,用户输入的验证码只要符合其中一段便验证通过,所以只是包含关系。

    点赞 评论 复制链接分享

相关推荐