2016-03-03 101 views
-5

這是我做的第一個項目,我知道有很多錯誤。我試圖用嵌套的if else語句創建一個計算器。我得到的唯一錯誤是在if語句中,我得到的是我不能從char到boolean。我不知道爲什麼它認爲我試圖改變爲布爾值,但我猜測「= A」等可能使它認爲?任何建議將不勝感激。字符不能轉換爲布爾值?

public static void main(String[] args) { //main class 
    char result = 0; //define and declare variables 
    double firstNumber = 0; 
    double secondNumber = 0; 
    double answer = 0; 

    System.out.println("Calculator Program\n"); //Text for user 
    System.out.println("Choose how to proceed:\n"); 
    System.out.println("A. Add\n"); 
    System.out.println("B. Subtract\n"); 
    System.out.println("C. Multiply\n"); 
    System.out.println("D. Divide\n"); 

    Scanner userInput = new Scanner(System.in); //create new Scanner 
    result = userInput.next().charAt(0); //Take only the first letter entered 

    if (result = A){ 

     System.out.println("Please enter the first number: "); 
      firstNumber = userInput.nextDouble(); //redefine first number 
       userInput.next(); //clears line 
     System.out.println("Please enter the second number: "); 
      secondNumber = userInput.nextDouble(); //redefine second number 
       userInput.next(); //clears line 

     answer = firstNumber + secondNumber; //algorithim 
     System.out.println("Answer: " + firstNumber + " + " + secondNumber + " = " + answer);//print answer 

        } 

      else if (result = B){ 
        System.out.println("Please enter the first number: "); 
        firstNumber = userInput.nextDouble(); //redefine first number 
         userInput.next(); //clears line 
       System.out.println("Please enter the second number: "); 
        secondNumber = userInput.nextDouble(); //redefine second number 
         userInput.next(); //clears line 

       answer = firstNumber - secondNumber; //algorithim 
       System.out.println("Answer: " + firstNumber + " - " + secondNumber + " = " + answer);//print answer 

           } 

        else if (result = C){ 
          System.out.println("Please enter the first number: "); 
          firstNumber = userInput.nextDouble(); //redefine first number 
           userInput.next(); //clears line 
         System.out.println("Please enter the second number: "); 
          secondNumber = userInput.nextDouble(); //redefine second number 
           userInput.next(); //clears line 

         answer = firstNumber * secondNumber; //algorithim 
         System.out.println("Answer: " + firstNumber + " * " + secondNumber + " = " + answer);//print answer 
              } 

          else if (result = D){ 
           System.out.println("Please enter the first number: "); 
          firstNumber = userInput.nextDouble(); //redefine first number 
           userInput.next(); //clears line 
         System.out.println("Please enter the second number: "); 
          secondNumber = userInput.nextDouble(); //redefine second number 
           userInput.next(); //clears line 

         answer = firstNumber/secondNumber; //algorithim 
         System.out.println("Answer: " + firstNumber + "/" + secondNumber + " = " + answer);//print answer 
             } 



} 

}

+3

賦值與平等。 ('='vs.'==')並且字符文字被單引號(''A'')包圍。 –

+0

更正:賦值表達式的類型是分配給變量的類型。所以表達式'aChar ='?''被鍵入爲'char',但'if'只接受'布爾型'表達式。那麼問題是「爲什麼不= =沒有按預期的那樣?」,其中有很多現有的教程/書籍/參考:) – user2864740

回答

1

char不能轉換到boolean

好像你想做檢查。你可以這樣做,

String sum = "0+3"; 

boolean isPlus = (sum.charAt(1) == '+'); 

isPlus將現在指數自字符持有真正的sum 1「+」

+0

或者他在'if'語句中使用賦值運算符。 –

+0

@JonnyHenly是的。我在我的答案中也包括了,顯示==如何生成布爾值 – 2016-03-03 05:14:33

0

如果塊你分配到的結果。 你應該做的,如果(結果== 'A')// 'A' 不是一個

+1

不正確。它應該是'A'。 –

0

你檢查這樣的:

if (result == 'A') 

變化A'A'===

0

爲了要匹配字符,您需要將if語句更改爲if(result =='A')而不是if(result == A)

以下代碼將爲您提供更多清晰度:

import java.util.Scanner; 
public class checkBoolToChar { 
    public static void main(String[] args) { 
     char a = 0; 
     Scanner in = new Scanner(System.in); 
     a = in.next().charAt(0); 

     if(a == 'A'){ 
      System.out.println("Match "); 
     } 
    } 
} 
+0

感謝您的明確 – JOHNSMITH8338

0

當你寫的

if(result = A) 

它實際上是分配值A結果變量的條件。現在,因爲A不是用引號引起來的,所以它假定A是一個變量,但由於它沒有在程序中的任何地方聲明,所以它假定它是一個布爾值。但結果的數據類型是char。因此它給你的數據類型不匹配錯誤。如果你把它寫成

if(result == "A") 

它會檢查字母是否是A,錯誤將被刪除。