我正在尝试制作一个方法来测试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
^
答案 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块。