2014-12-01 11 views
-2

Попытка сделать цикл for, в котором пользователь вводит 6 номеров. Затем каждое число проверяется, чтобы убедиться, что оно положительно. Затем все они складываются для промежуточного итога.Локальная переменная, возможно, не была инициализирована в моем цикле for

В моей последней строке count += itemPrice; Я получаю сообщение об ошибке count: «Локальная переменная, возможно, не была инициализирована». Мой приятель, похоже, не может понять, почему и интересно, что с этим связано.

public static double namehere() { 
double count; 
for (int x = 0; x < 6; x++) 
{ 
    Scanner input = new Scanner (System.in); 
    System.out.println ("Price of Item: "); 
    double itemPrice = input.nextDouble(); 
    while (itemPrice < 0.01) 
    { 
     Scanner input2 = new Scanner (System.in); 
     System.out.println ("Price of Item: "); 
     itemPrice = input.nextDouble(); 
    } 
    count += itemPrice; 
} 
+1

Вам нужно указать значение по умолчанию для вашего счета. Здесь я бы предложил 0. – realUser404

+0

Ваш метод нуждается в операторе return поверх 'count', которому требуется значение по умолчанию. –

+0

Возможный дубликат [Как избежать «локальная переменная, возможно, не была инициализирована»?] (Http://stackoverflow.com/questions/1585513/how-to-avoid-the-local-variable-may-not-have -been-initialized) –

ответ

2

Как сказано в сообщении об ошибке, ваша count переменная не инициализирована. Чтобы решить эту ошибку, выполните инициализацию со значением по умолчанию, например 0.

Примечание: локальные переменные не инициализируются неявно, а не как члены класса.

3
double count;  // not initialized 

double count = 0; // initialized 

Локальные примитивные переменные по умолчанию не установлены равными 0, поэтому они должны быть явно инициализированы.

1

Цель локальных переменных отличается от назначения переменных экземпляра. Локальные переменные должны использоваться как часть расчета; переменные экземпляра содержат состояние. Если вы используете локальную переменную без присвоения ей значения, это почти наверняка логическая ошибка, и, следовательно, компилятор жалуется.

+0

Если бы это была переменная экземпляра, также была бы ошибка, если не была инициализирована – realUser404

+0

Нет, в случае переменной экземпляра не было бы никаких ошибок, поскольку JVM инициализирует все переменные экземпляра при создании объекта. –

+0

Я не знал этого, спасибо за информацию – realUser404

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