2015-03-20 4 views
-1

Я новичок в Java и хотел получить разъяснения, я понимаю, что я объявляю переменную int из параметров внутри метода, но почему это «результат» не может быть разрешен для переменной.Почему я не вижу методы-локальные переменные вне метода?

public class Methods{ 

    public static void main(String[] args) { 

     //f(x) = x * x 
     square(5); 
     System.out.println(result); 

    } 

    //This method 
    static int square(int x) { 
     int result = x * x; 
    } 
+0

Как вы сказали, это ** локальная переменная **, так что это не будет определено в 'основной() '. Вы можете вернуть 'result' и сохранить его в переменной в' main() 'вместо этого. –

ответ

1

Вы можете, но обратите внимание, что локальная переменная определяется только в их уважаемых функциях. Поэтому, хотя result определен в square(), он не определен в main(). Так что вы хотите сделать, это вернуть значение для square функции и хранить, что в переменной внутри main() так:

public static void main(String[] args) { 

    int myResult = square(5); 
    System.out.println(myResult); 
} 

//This method 
static int square(int x) { 
    int result = x * x; // Note we could just say: return x * x; 
    return result; 
} 

Example Here

+1

OHHHH! Хорошо. Таким образом, это означает, что никакая другая локальная переменная, кроме возвращаемых значений, не может быть выполнена в основном и будет работать только с собственным методом ТОЛЬКО для возврата? – user3130676

+0

@ user3130676 Да. Возврат возвращает значение, поэтому вызов функции 'square (5)' будет таким, как если бы это число '25'. Локальные переменные определяются только в тех функциях, в которых они были сделаны, после завершения функции они исчезают. Но вы могли бы вернуть их ценность. –

+0

Может ли возвращенные значения быть строками? и каким другим способом я могу вернуть значение, используя System.out.println (square()) в основном методе? – user3130676

0

Поскольку вы новичок, я объясню это тщательно укусил

Правило 1: Локальные переменные объявлены в методах, конструкторах или блоках.

Правило 2: Локальные переменные создаются при вызове метода, конструктора или блок вводится и переменная будет уничтожена, как только она выходит метод, конструктор или блок.

Правило 3: для локальных переменных значение по умолчанию отсутствует, поэтому должны быть указаны локальные переменные, и перед первым использованием должно быть назначено начальное значение.

public class Methods{ 

     public static void main(String[] args) { 
      //f(x) = x * x 
      square(5); 
      System.out.println(result); //result! who are you? 
        //Main will not recognize him because of rule 3. 
      } 


     static int square(int x) { 
      int result = x * x; //you did it as said in rule 1 
     }//variable result is destroyed because of rule 2. 

Прочтите подробные комментарии в коде.

решение Ну для вашего кода:

Методы общественного класса {

public static void main(String[] args) { 
     //f(x) = x * x 
     int result=square(5); 
     System.out.println(result); //result! who are you? 
       //Main will not recognize him because of rule 3. 
     } 
    static int square(int x) { 
     int result1 = x * x; //you did it as said in rule 1 
     return result1; 
    } 
+2

Я не могу использовать переменную 'result', потому что она существует только внутри метода? – user3130676

+0

@ user3130676 Это правильно. –

+0

Правило № 2 неверно в моей точке зрения. Он не будет создан, если введен какой-либо блок, он будет создан, если выполнение программы достигнет объявления. Другая часть верна. – Tom

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