2014-10-08 3 views
-2

Любые советы о том, как сделать эти переменные полезными вне операторов if, в которых они определены?«___» не может быть разрешено переменной

Scanner kb = new Scanner(System.in); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num1 = kb.nextDouble(); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num2 = kb.nextDouble(); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num3 = kb.nextDouble(); 

    if (num1>num2){ 
     if (num1>num3){ 
      double hypo = num1; 
      double side1 = num2; 
      double side2 = num3; 
     }else{ 
      double hypo = num3; 
      double side1 = num1; 
      double side2 = num2; } 
    }else if (num2>num3){ 
     double hypo = num2; 
     double side1 = num1; 
     double side2 = num3; } 

    if ((hypo*hypo)-((side1*side1)+(side2*side2)) == 0){ 

    } 

Я также пытался делать это таким образом:

Scanner kb = new Scanner(System.in); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num1 = kb.nextDouble(); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num2 = kb.nextDouble(); 
    System.out.println("Please enter a length of a side of a triangle: "); 
    double num3 = kb.nextDouble(); 
    final double hypo; 
    final double side1; 
    final double side2; 

    if (num1>num2){ 
     if (num1>num3){ 
      hypo = num1; 
      side1 = num2; 
      side2 = num3; 
     }else{ 
      hypo = num3; 
      side1 = num1; 
      side2 = num2; } 
    }else if (num2>num3){ 
     hypo = num2; 
     side1 = num1; 
     side2 = num3; } 

    if ((hypo*hypo)-((side1*side1)+(side2*side2)) == 0){ 

    } 

я получил помощь с этим вчера на сайте, но не понял, как было получено, что решение. Объяснение будет отличным

+0

Вы можете ознакомиться с несколькими учебными материалами о языке в Интернете. В этом разделе описывается [область переменной] (http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm) – scrappedcola

ответ

2

Да. Переместите декларацию так, чтобы переменные все еще имели область,

double hypo = num3; 
double side1 = num2; 
double side2 = num1; 
if (num1 > num2){ 
    if (num1 > num3){ 
    hypo = num1; 
    side1 = num2; 
    side2 = num3; 
    } else { 
    hypo = num3; 
    side1 = num1; 
    side2 = num2; 
    } 
} else if (num2 > num3) { 
    hypo = num2; 
    side1 = num1; 
    side2 = num3; 
} 
Смежные вопросы