2010-03-08 3 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

И что вы сообщаете об ошибке? –

+0

Было бы полезно предоставить нам любые ошибки, которые вы видите, или указание * почему * вы считаете, что делаете ошибку синтаксиса – Dancrumb

+0

Какая ошибка вы получаете? Кроме того, лучше было бы написать 'else if (condition) {}' вместо 'else {if (condition) {}}'. http://java.sun.com/docs/books/tutorial/java/nutsandbolts/if.html –

ответ

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';) –

0

Вы не можете иметь два else с для того же, если. Изменение вложенности, так что вы используете else if вместо

else 
{ 
    if 
0

Это выглядит как проблема у вас есть несколько блоков-то еще, один, если оператор может иметь только один блок еще.

11

Как вы, студент, я думаю, что, вероятно, уместно, что я указываю вам часть онлайн-документации Java в формате Control Flow Statements.

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

+1

, если условие (...) истинно, блок if будет выполнен. если условие ложно, блок else будет выполнен. у вас есть одно условие и три остальных блока. какой из них будет выполнен, если условие ложно? – tiftik

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

Это может быть также стоит отметить, что ваш метод не тест, чтобы увидеть, если три длины может сделать треугольник. Например, trya(1, 1, 4) приведет к печати yes, хотя длины сторон 1, 1, 4 не образуют треугольник.

Смежные вопросы