2013-02-26 3 views
0

Так что я должен написать программу для счета-фактуры, где я определяю переменные локально, а не глобально. Так что это похоже на то, как у меня есть.Использование метода отображения с локальными переменными в java

public void setAmount(int anyAmount) 
{ 
int amount; 
amount = anyAmount; 
} 

Я тогда сделать метод отображения, как это и получить ошибку говоря не могу найти символ

public void displayInvoice() 
{ 
System.out.println("Amount: " + amount); 

Я могу легко сделать это во всем мире, но возникли проблемы с этим. Спасибо!

+2

Вы уверены, что правильно прочитали задание? – James

+3

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

+0

Является ли требование, чтобы переменные определялись локально частью домашнего задания? – rgettman

ответ

3

Когда вы объявляете переменную внутри функции, например, в вашем setAmount, она существует только до тех пор, пока эта функция выполняется; он существует только между {и}. Вот почему вы не можете ссылаться на нее позже во второй функции, поскольку она больше не существует. По существу, то, что вы делаете, это установить его, а затем сразу избавиться от него, не прилагая никаких усилий к вашему коду, а просто путем выделения и использования памяти в программах.

Способом обойти это было бы использование «глобального», как вы сказали, или передать его после того, как вы его установили, и поместить его в другую переменную, которую затем отправляете в функцию displayInvoice. Последний метод требует, чтобы setAmount и displayInvoice были частью самой большой функции, а промежуточная переменная объявлена ​​внутри нее. В целом, «глобальный», как вы сказали, является самым простым и, вероятно, лучшим решением, учитывая то, что вы объяснили.

Unworking Пример:

main() { 
    int amount = 0; 
    amount = setAmount(5); 
    displayInvoice(amount); 
} 

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

Public int setAmount(int anyAmount) 
0

Когда вы объявляете переменную внутри метода становится локальное значение его видно только в этом методе, поэтому вы получаете эту ошибку, вы можете исправить что делает его глобальным.

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