2016-03-18 4 views
0

Получение ошибочной ошибки для моей программы расчета области. Мне нужно, чтобы он оставался как double, а не int, чтобы он мог принимать десятичные числа. Вот ошибка. AreaCalculationProgram.java:39: ошибка: переменная ширина может не быть инициализирована areaofrectangle = width * length;Переменная не инициализирована в Java - ошибка 39

И вот мой код:

 //Code for Rectangle 

    double areaofrectangle, width, length; 
    //int areaofrectangle; 
    System.out.print(" --> Enter Width of Rectangle in Centimetres: "); 
    //Scanner sc = new Scanner(System.in);  //Scanner is for testing rectangle by its self 
    //int width = sc.nextInt(); 
    // double width = sc.nextDouble(); 
    System.out.print(" --> Enter Length of Rectangle in Centimetres: "); 
    //int length = sc.nextInt(); 
    // double length = sc.nextDouble(); 
    areaofrectangle = width * length; 
    System.out.print("Area of Rectangle: "+ areaofrectangle); 

Благодаря

+1

Какие значения вы ожидаете от 'width' и' length' при выполнении 'areaofrectangle = width * length;'? Почему вы думаете, что эти ценности будут там? – Pshemo

ответ

1

Вы должны инициализировать их до 0, как показано ниже.

Переменные класса и экземпляра имеют значение по умолчанию, равное null, int - 0, boolean - false. нам не нужно их определять. Но локальные переменные, такие как ширина и длина вашего случая, не имеют значения по умолчанию. Если локальная переменная не было присвоено значение, компилятор всегда выдаст ошибку

Много причин обсуждаются на ссылке ниже Why must local variables, including primitives, always be initialized in Java?


Попробуйте код ниже. оно работает. u может изменить код в соответствии с вашими требованиями.

double areaofrectangle = 0; 

     System.out.print(" --> Enter Width of Rectangle in Centimetres: "); 
     Scanner sc = new Scanner(System.in);  //Scanner is for testing rectangle by its self 
     double width = 0; 
     width = sc.nextDouble(); 
     System.out.print(" --> Enter Length of Rectangle in Centimetres: "); 
     double length = 0; 
     length = sc.nextDouble(); 
     areaofrectangle = width * length; 
     System.out.print("Area of Rectangle: "+ areaofrectangle); 
+0

Я знаю это, но значения должны вводиться при запуске. поэтому я могу определить их как 0. @LearningPhase – Jason

+0

Я пробовал это, но когда вы вводите его как ноль, вы не можете вводить значения для ширины и длины при его запуске. @LearningPhase – Jason

1

Компилятор предоставит ошибку времени компиляции для локальных переменных, если какая-либо локальная переменная используется без ее инициализации. Из вашего фрагмента кода ясно, что вы не инициализируете ширину и высоту переменных.