2016-03-06 4 views
0

Вот фрагмент кода (else пункт):инкремента переменной в случае заявление

else { // for operators 
      int count = 1; 
      if (sub.compareTo("+") == 0){ //if + operator 
       double d1=stack.pop(); 
       double d2=stack.pop(); 
       answer=d1+d2; 
       //first two items on stack added 
       stack.put(answer); // put ans on stack 
       System.out.println(count+ ") "+d1+ " + " +d2 + " = " +answer); // display ans 
       count++; 
      } 
      if (sub.compareTo("-") == 0){ //if - operator 
       double d1=stack.pop(); //pop first two items on stack 
       double d2=stack.pop(); 
       answer =d2-d1; //subtract the items 
       stack.put(answer);//put ans on stack 
       System.out.println(count+ ") "+d2+ " - " +d1 + " = " +answer);///display answer 
       count++; 
      } 
} 

Этот код пытается оценить основные математические операции с использованием stack. Примерами могут служить:

  1. 2 + 2 = 4
  2. 4 + 4 = 8

Я хочу использовать переменную count, чтобы отобразить номер, но он остается на 1. Вы знаете, почему?

+0

так как исправить ошибку? – chris

+0

Действительно ли 'count' * * не меняется от 1? Вы использовали отладчик? Разве это не просто увеличивается до 2, исчезает и инициализируется до 1 снова? – MikeCAT

+0

да, вы правы – chris

ответ

1

Сделайте подсчет глобальную переменную и объявить его вне функции для хранения значения правильно, что вы делаете, это ограничение объема подсчета, поэтому он дает вам тот же ответ каждый раз, когда

int count=1; // make sure you count is outside your function 
else{ // for operators 

      if(sub.compareTo("+")==0){ //if + operator 
       double d1=stack.pop(); 
       double d2=stack.pop(); 
       answer=d1+d2; 
       //first two items on stack added 
       stack.put(answer); // put ans on stack 
       System.out.println(count+ ") "+d1+ " + " +d2 + " = " +answer); // display ans 
       count++; 
      } 
      if(sub.compareTo("-")==0){ //if - operator 
       double d1=stack.pop(); //pop first two items on stack 
       double d2=stack.pop(); 
       answer =d2-d1; //subtract the items 
       stack.put(answer);//put ans on stack 
       System.out.println(count+ ") "+d2+ " - " +d1 + " = " +answer);///display answer 
       count++; 
      } 
+0

Генетически использование глобальных переменных не считается хорошим. – MikeCAT

+0

, так что поставьте его вне функции, объявите локальную переменную, которая может ограничить вас определенным телом функции –