if else如果不输出else if语句java

时间:2019-03-09 05:46:39

标签: java eclipse if-statement

如果代码的一部分,我在其他方面有问题。第一个“ if”工作正常,第三个(else)工作正常,但是我对代码的“ else if”部分有问题,程序无法执行此语句。

if ((a+c)>=(b+d)) {
    if ((a==b) && (b==c) && (c==d)) {
        System.out.println("square");
    } else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d)  ) {
        System.out.println("rectangle");
    } else {
        System.out.println("four different sides");
    }
} else
    System.out.println("ERROR");

因此,当我输入值a = c和b = d时,我得到的是“错误”而不是“矩形”。

我做错了什么?

谢谢!

5 个答案:

答案 0 :(得分:0)

您的顶部条件是:'if((a + c)> =(b + d))'。 也许您输入的是a = c和b = d,但可能不符合此条件'(((a + c)> =(b + d))',这是第一个条件。因此,它将进入其他部分首先if语句。 有关更多详细信息,请分享您输入的值,也许我可以再详细说明一下。

答案 1 :(得分:0)

如果输入值a = c和b = d,则还必须检查a或c值是否大于b和d。 在您的情况下,a和c的值小于b和d,因此如果语句不满足条件,则首先使用。

您可以尝试一下以了解情况。

public static void main(String[] args) {
        int a = 4,b =2 ,c =4 ,d =2;
        if ((a+c)>=(b+d))
        {
            if ((a==b) && (b==c) && (c==d))
            {

                System.out.println("square");

            }
            else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d)  )
            {
                System.out.println("rectangle");
            }

            else
            {

                System.out.println("four different sides");
            }

        }
        else{
            System.out.println("ERROR");
        }
    }

答案 2 :(得分:0)

只需将您的代码修改为此:

if ((a + c) >= (b + d)) {
        if ((a == b) && (b == c) && (c == d)) {
            System.out.println("square");
        } else if ((a != b) && (c != d) && (a == c) && (b == d)) {
            System.out.println("rectangle");
        } else {
            System.out.println("four different sides");
        }
    } else if ((a != b) && (c != d) && (a == c) && (b == d)) {
        System.out.println("rectangle");
    } else if (a != b && b != c && c != d && a != c) {
        System.out.println("four different sides");
    } else
        System.out.println("ERROR");

完成工作:)

答案 3 :(得分:0)

如果((a + c)> =(b + d))对于矩形条件不正确,则您的第一个条件是因为 对于矩形,两个相对的边都相等。如果将(a + c)相加,则看起来两个小边的值永远不会等于两个大边(b + d)的值。类似地,如果将a,c更改为大边和b, d,因为矩形条件的小边与以前相同。因此您可以像下面这样更改

正方形的样本输入 int a = 2,b = 2,c = 2,d = 2;

矩形的样本输入 int a = 2,b = 4,c = 2,d = 4;

样本输入 a = 10,b = 4,c = 6,d = 9

if ((a==c)||(b==d))
        {
            if ((a==b) && (b==c) && (c==d))
            {
                System.out.println("square");
            }
            else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d))
            {
                System.out.println("rectangle");
            }
            else 
            {           
                System.out.println("Two sides are similar but not square or rectangle");
            }

        } else
        System.out.println("Foure side are different");

答案 4 :(得分:0)

您可以尝试使用此解决方案来检查所有样本输入的正方形,矩形和四个边是否不同

 if(a>0 && b>0 && c>0 && d>0)
  {
    if ((a==c) ||(b==d))
    {
        if ((a==b) && (b==c) && (c==d))
        {
            System.out.println("square");
        }
        else if ( (a!=b) && (c!=d)  && ( a== c) && (b == d))
        {
            System.out.println("rectangle");
        }
        else{
            System.out.println("Two side are same but not square or rectangle");
        }
    }  
    else 
       System.out.println("four different sides");

 } else 
    System.out.println("Error");