2013-09-09 4 views
0

Я посмотрел это, но не нашел многого. Вот код:Доступ к значению локальной переменной для переменной экземпляра в java

public class Core { 
     int amount = 0; 
     public void startup(int Items) { 
      int x = 0; 
      System.out.println("Welcome Back,"); 
      while(x < amount) { 
       amount++; 
       x++; 
      } 
     } 
     agendaitem[] item = new agendaitem[150]; 
     public void instantiate(String name, String status, String comments,int i) { 
      item[i] = new agendaitem(); 
      item[i].name = name; 
      item[i].complete = status; 
      item[i].comments = comments; 
     } 
     public void error(String reason) { 
      System.out.println("Error"+reason); 
     } 
     public void setitem(String input) throws Exception { 
      Interface interf = new Interface(); 
      System.out.println(amount); 
      int x = 0; 
      while(x < amount) { 
       interf.inputb(item[amount].name); 
       break; 
      } 
     } 
     public void setstatus() { 

     } 
     public void rename() { 

     } 
     public void delete() { 

     } 
    } 

В принципе мне нужно установить значение переменной суммы так, что она такая же, как значение элементов из запуска метода. Затем мне нужно получить доступ к методу setitem метода. Но по какой-то причине setitem видит сумму как 0, даже после того, как я установил значение 2, запустив запуск. Любой совет? Благодарю. :)

ответ

0

Я думаю, что вы могли бы найти, чтобы сделать «сумму» статической переменной в вашем классе Core. Это потребовало бы объявить его следующим образом:

static int amount = 0; 

Смотрите здесь для информации: http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html

0
while(x < amount) 

вернется false, так как x и amount являются 0 в начале, так amount всегда будет сохранять значение 0. Почему не просто делать

amount = items 

?

Ваш метод startup будет выглядеть this.-

public void startup(int Items) { 
    amount = Items; 
} 

Кстати, следуя правилам именования Java, Items следует назвать items, верблюжьего.

+0

У меня было подобное изначально, но он не работает так, пытался просто увеличивающиеся количество до тех пор, пока равнялось пунктов –

+0

Есть ли у вас попытался отладить ваш код? Вы случайно создаете несколько экземпляров класса «Core»? – ssantos

1

Внутри петли внутри поля startup, вы увеличиваете и x, и amount. Так что если x < amount, то всегда будет так, что x < amount - по крайней мере до amount достигает MAXINT.

Я настоятельно рекомендую научиться использовать отладчик. Вы бы сразу нашли эту ошибку.

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