繁体   English   中英

这条件有什么问题?

[英]What's wrong with this conditional?

我正在尝试制作一个方法,测试3个长度是否可以形成三角形。 我想我正在制作某种语法错误,但我无法弄清楚它是什么。

这是相关的代码:(在java中)

public static void trya (int a, int b, int c)
{
    if (c>(a+b))
    {
        System.out.println ("yes") ;
    }
    else
    {
        if (b>(a+c)) 
        {
            System.out.println ("yes") ;
        }
    }
    else 
    { 
        if (a>(b+c))
        {
            System.out.println ("yes") ;
        }
    }
    else
    {
        System.out.println ("no") ;
    }

}

这是我得到的错误消息:

tryangle.java:17: 'else' without 'if'
        else 
                ^

第一个if有两个else块。 尝试使用else if

public static void trya (int a, int b, int c)
{
    if (c>(a+b))
    {
        System.out.println ("yes") ;
    }
    else if (b>(a+c)) 
    {
        System.out.println ("yes") ;
    }
    else if (a>(b+c))
    {
        System.out.println ("yes") ;
    }
    else
    {
        System.out.println ("no") ;
    }
}

当你还是学生时,我认为我可能会指出Java在线文档的控制流语句部分。

这是无效的:

if (cond A) {
    // ...
} else {
    if (cond B) {
        // ...
    }
} else {
    if (cond C) {
        // ...
    }
}

它应该是:

if (cond A) {
    // ...
} else if (cond B) {
    // ...
} else if (cond C) {
    // ...
}

本Sun教程中了解更多信息。

就个人而言,我不喜欢if/else

public static boolean isValidTriangle(int a, int b, int c)
{
    return (c > a + b) || (b > a + c) || (a > b + c);
}

public static void trya(int a, int b, int c)
{
    System.out.println(isValidTriangle(a, b, c) ? "yes" : "no");
}

它应该是:

public static void trya (int a, int b, int c) 
{ 
    if (c>(a+b)) 
    { 
        System.out.println ("yes") ; 
    } 
    else if (b>(a+c))  
    { 
        System.out.println ("yes") ; 
    } 
    else  if (a>(b+c)) 
    { 
        System.out.println ("yes") ; 
    } 
    else 
    { 
        System.out.println ("no") ; 
    } 
} 

这是您的代码格式化的方式:

if (...) {...}
else {...}
else {...} //else than what?

值得指出的是,您的方法实际上并未测试三个长度是否可以形成三角形。 例如,即使边长trya(1, 1, 4)不形成三角形, trya(1, 1, 4)也会导致打印为yes

你不能有两个else S为相同的,如果。 更改您的嵌套,以便您使用else if而不是

else
{
    if

看起来问题是你有多个else块,一个if语句只能有一个else块。

暂无
暂无

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

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