java:为什么上面的条件没有被执行?

时间:2012-08-18 09:59:15

标签: java

嗨,下面是我的程序,请你告诉我为什么第一个条件被执行?

  package com;

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String args[]) {

        List<String> values = null;

        String Id = "1234";

        if (values != null && Id != null && values.size() > 1
                && !values.contains(Id)) {
// This is never executed
            System.out.println("Throw Exception");

        } else {
// This is always called
            System.out.println("Fine");

        }

    }
}

6 个答案:

答案 0 :(得分:1)

您始终以else为例,因为valuesnull而您的if条件需要values != null

也许您应该查看基本的Boolean Algebra,了解为什么if条件不能为true

答案 1 :(得分:0)

庵:

List<String> values = null;

if (values != null && ...

您希望if分支上的代码如何执行?

我认为你的意思是:

    if (values != null && Id != null && values.size() > 1
            && !values.contains(Id)) {
        System.out.println("Fine");
    } else {
        System.out.println("Throw Exception");
    }

这样如果所有支票都保持不变,则表示“罚款”,否则会出现问题。

答案 2 :(得分:0)

值为NULL。因此只会执行ELSE部分。 那么这里的问题到底是什么?

我认为这实际上是你想要的

package com;

import java.util.ArrayList; import java.util.List;

public class Test {

    public static void main(String args[]) {

        List<String> values = null;
        String Id = "1234";

        // Some modification to values 

        if (values == null || Id == null || (values.size() > 1
                && !values.contains(Id))) {
            System.out.println("Throw Exception");
        } else {
            System.out.println("Fine");
        }

    }
}

答案 3 :(得分:0)

由于值为null并且您检查的值不为null,因此它将始终执行else else

List<String> values = null;

                String Id = "1234";

                if (values != null && Id != null && !values.contains(Id)) {
        // This is never executed
                    System.out.println("Throw Exception");

                } else {
        // This is always called
                    System.out.println("Fine");

                }

答案 4 :(得分:0)

如果要执行条件,则根据条件

创建数据
 List<String> values = new ArrayList<String>();
    values.add("12345");
    values.add("12345");

并且-1在发布SO之前没有付出足够的努力

答案 5 :(得分:0)

我们在java中使用

String test = "";
String test2 = "";

if(test.equal(test2)){
//something
}
else{
//something
}

在C#中我们使用:

String test = "";
String test2 = "";

if(test == test2){
//something
}
else{
//something
}

比较字符串..希望这有帮助。 :d