这条件有什么问题?

时间:2010-03-08 21:43:29

标签: java 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 
                ^

9 个答案:

答案 0 :(得分:13)

第一个else有两个if块。尝试使用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") ;
    }
}

答案 1 :(得分:11)

当你还是学生时,我认为我可能会指出你在Java在线文档的Control Flow Statements部分。

答案 2 :(得分:4)

这是无效的:

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

应该是:

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

this Sun tutorial了解详情。

答案 3 :(得分:4)

就个人而言,我不太喜欢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");
}

答案 4 :(得分:2)

应该是:

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

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

如果相同,则不能有两个else。更改嵌套,以便使用else if而不是

else
{
    if

答案 8 :(得分:0)

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