当两者的输出相同时,为什么我的if / else语句不匹配?

时间:2013-12-05 02:53:13

标签: java list if-statement arraylist return-value

        List6 = new ArrayList<String>();
        List6.add(driver.findElement(By.xpath(".//*[@name='authorName']")).getAttribute("value"));
        System.out.println("List6 : " +List6);
        System.out.println("List1 : " +List1.get(u));
        if (List1.get(u).equals(List6)){
            System.out.println("author name checked!");
        } else {
            System.out.println("wrong author name!");
        }

为什么总是用else语句回复我?我打印清单6和1都给我相同的回报

这是结果

List6 : [alan]
List1 : alan
wrong author name!

我的列表1数组

[alan, ben, chris, dawn, eva, fann, grace, helen, ian, jag, ken, lyn, stephen]
for (int u = 0; u < List1.size(); u++) {
            System.out.println(List1.get(u));

2 个答案:

答案 0 :(得分:1)

equals()类上的String方法是两个字符串内容的字符比较。

在你进行这种比较之前,你正在打印字符串,任何人都可以很容易地看到它们是非常不同的。您输入else块的if else部分的原因是因为if (List1.get(u).equals(List6))始终评估为false。

[alan]alan不是等效字符串,使用.equals()进行比较时,会返回false

答案 1 :(得分:0)

List1.get(u)是一个String。
List6是一个ArrayList。
String永远不会等于ArrayList

也许您需要更改以下代码:

if (List1.get(u).equals(List6.get(0))){
        System.out.println("author name checked!");
    } else {
        System.out.println("wrong author name!");
    }