繁体   English   中英

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

[英]if else if not outputing else if statement java

如果代码的一部分,我会遇到其他问题。 第一个“ 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时,出现“错误”而不是“矩形”。

我做错了什么?

谢谢!

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

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

您可以尝试此方法进行理解。

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");
        }
    }

只需将代码修改为:

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");

任务完成 :)

您的第一个条件if((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");

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

 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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM