2014-11-16 3 views
0

Я написал следующую программу для отображения всех простых чисел между 2 и 50 (включительно). Программа работала так, как предполагалось, но когда я пересматривал код, я задавался вопросом, почему он не провалился. Оператор if может изменять значение переменной isprime. Однако не изменилось ли это изменение после того, как оставлен внутренний код for? Это означало бы, что isprime останется true, и все номера будут отображаться.Объем Java и время жизни переменной

class Prime { 
    public static void main (String args []) { 

    int a, b; 
    boolean isprime; 

    for (a = 2; a < 51; a++) { 

     isprime = true; 

     for (b = a-1; b > 1; b--) { 

      if (a % b == 0) isprime = false; 
     } 

     if (isprime) System.out.println(a); 
    } 
} 
} 

ответ

2

Ну, как вы видите, что это не так, как это работает: объем переменной является блок, в котором она объявлена, в том числе любого субблока.

Изменение переменной в дополнительном блоке изменяет ее для всей ее области. Копия переменной не выполняется каждый раз, когда начинается новый блок.

1

1. 'если' оператор может изменить значение 'IsPrime' переменной

Yes.The внутренний if может изменить isprime

2. Однако, это изменение не забывается, когда оставлен внутренний «код» кода {}?

No.It не забыли.

3.Это будет означать, что isprime останется верным и будут отображаться все номера.

Это может произойти, только если ваш второй вопрос (№ 2) забыто

Думают о it.A глобальной переменной может быть изменено с помощью любых методов, как сфера его целая переменная program.This могут быть изменены любым способом. Аналогично, isprime может быть изменен в main, как это указано в main, и его объем составляет main.

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

  • Нет связанных вопросов^_^