2010-03-08 108 views
2

我想做一個方法,測試看看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

什麼是錯誤消息告訴你? – 2010-03-08 21:45:33

+0

向我們提供您遇到的任何錯誤或指示*爲什麼*您認爲自己正在犯的語法錯誤會很有用 – Dancrumb 2010-03-08 21:45:36

+0

您會得到什麼錯誤?除此之外,一個改進是編寫'else if(condition){}'而不是'else {if(condition){}}'。 http://java.sun.com/docs/books/tutorial/java/nutsandbolts/if.html – 2010-03-08 21:45:51

回答

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

實際上有**三**'else'塊;) – 2010-03-08 21:49:16

0

你不能有兩個else S爲相同的,如果。讓您使用else if而不是

else 
{ 
    if 
0

它看起來像問題是你有多個else塊更改嵌套,一個if語句只能有一個else塊。

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

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

這是你的代碼是如何格式化:

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

別的比什麼? ? – David 2010-03-08 22:42:13

+1

如果條件(...)爲真,則將執行if塊。如果條件爲false,則會執行else塊。你有一個條件和其他三個塊。如果條件爲假,哪一個將被執行? – tiftik 2010-03-08 23:05:35

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

這也可能是值得指出的是,你的方法並不實際測試,看看三個長度可以使一個三角形。例如,即使邊長1,1,4不形成三角形,trya(1, 1, 4)也會導致打印yes