2016-01-05 3 views
-1

Когда я запускаю этот код я получил 2 тип ошибки:Тип несовпадение и локальная переменная результат не может быть инициализирована

  1. Локальная переменная результата не может быть инициализирована
  2. несоответствие типов

import java.util.Scanner; 
public class Cal_forme { 

public static void main(String[] args) { 

    Scanner calculator =new Scanner(System.in); 
    double fnum,snum,result; 
    System.out.println("Enter your first num : "); 
    fnum =calculator.nextDouble(); 
    System.out.println("Enter your second num :"); 
    snum =calculator.nextDouble(); 
    if (result =fnum + snum) { 
     System.out.println("your addition is here" +result); } 
     else if (result =fnum - snum) { 
      System.out.println("your substraction is here" +result); } 

     else { 
      System.out.println("ok"); 
     } 
} 

} 
+0

Подсказка: инициализировать переменные, например. 'result = 0.00;' –

+0

if (result * '=' * fnum + snum) –

+0

'if (result = fnum + snum)' что вы хотите, чтобы этот оператор выполнял? Если вы хотите назначить, это не может быть условием, так как возвращаемый тип не является логическим. – Eran

ответ

0

проблема заключается в следующем:

if (result =fnum + snum) { 
    System.out.println("your addition is here" +result); } 

Проблема с кодом AS ПИСЬМЕННОГО является то, что тип выражения result = fnum + snum является double, но условие из if оператора должен иметь тип boolean.

Это вызывает «несоответствие типа».

«локальная переменная результата не может быть инициализирован» ошибка вероятно происходит потому, что предыдущая ошибка путает компилятор, и он не может понять, что result было определенно присвоенной в точке, которую вы пытаетесь использовать его.

Так в чем же проблема?

Хорошо просматривая строки, я предполагаю, что вы должны читать символ (например, «+» или «-») от пользователя, чтобы рассказать калькулятору, что делать. Затем вы должны проверить, что характер ...

Но так или иначе, if (result = fnum + snum) это неправилен, потому что вам нужно boolean и if (result == fnum + snum) неправильно, потому что result не инициализирована ... и это не делает много смысла учитывая то, что вы пытаетесь напечатать.