Valriable, возможно, не были инициализированы? - PullRequest
1 голос
/ 26 октября 2011

Я пытаюсь преобразовать переменную "bonusStr" в двойное значение, чтобы ее можно было использовать при расчете.Однако при попытке компиляции я получаю сообщение об ошибке «переменная bonusStr, возможно, не был инициализирован».Я знаю, что это действительно новый вопрос, но любая помощь будет оценена.

Большое спасибо!

Не ожидал так много ответов в течение нескольких минут - я решилвопрос.Спасибо вам за все.: -)

import static javax.swing.JOptionPane.*;
import java.text.DecimalFormat;

class Question3 {

public static void main(String[] args) {

    String intrestRateStr = showInputDialog("What is the interest rate?");    
        int intrestRate = Integer.parseInt(intrestRateStr);

    String depositStr = showInputDialog("How much will you deposit?"); 
        double depositAmount = Double.parseDouble(depositStr);

   DecimalFormat pounds = new DecimalFormat("£###,##0.00");

   double amountInterest = calcAmount(intrestRate, depositAmount); 

   String bonusStr;
          double bonus = Double.parseDouble(bonusStr);

   if (amountInterest >= 5000.00)
       bonus = (+100.00);
   else if (amountInterest >= 1000.00)
       bonus = (+50.00);


   double finalAmountInterestBonus = bonus + amountInterest;

    showMessageDialog(null, 
            "Your savings will become " + pounds.format(finalAmountInterestBonus));
}

private static double calcAmount(int intRate, double depAmount) {
    double result = depAmount*(1.0 + intRate/100.0);
    return result;
 }   
}

Ответы [ 3 ]

1 голос
/ 26 октября 2011
   String bonusStr;
          double bonus = Double.parseDouble(bonusStr);

Вы никогда не устанавливаете значение на bonusStr - по умолчанию оно будет null.Вы используете его, прежде чем дать ему значение.Попробуйте:

String bonusStr = "0";

Хорошей идеей будет присвоить ему значение по умолчанию, скажем 0 или что-то еще, что поможет вам диагностировать, что вы забыли дать правильное значение.

1 голос
/ 26 октября 2011
String bonusStr;
double bonus = Double.parseDouble(bonusStr);

Поскольку состояние ошибки bonusStr не инициализировано (вы не влияли на значение), поэтому вы не должны использовать его внутри Double.parseDouble, пока оно не будет иметь значение.

0 голосов
/ 26 октября 2011

Ваша программа вызовет исключение NumberFormatException.Вы делаете parseDouble строки, которая не имеет значения.Вы должны установить в BonusStr значение, прежде чем выполнять для него parseDouble.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...