環境
・ホストOS: Windows10 Home
・ゲストOS: WSL2 Ubuntu18.04 LTS
・VScode ver 1.44.2
・Java openjdk11
エラー内容
public static int execute(int firstNum, char operator, int secondNum) throws ArithmeticException{
switch (operator) {
case "+": //1
return firstNum + secondNum;
break;
上のコードを実行したところ、//1の箇所で下記のエラーが発生した。
・incompatible types
・Type mismatch: cannot convert from String to char
"+"がchar型ではなく、String型の文字列として認識された模様。
解決法
・文字をchar型の変数として扱う際はシングルクォーテーションでくくる。
public static int execute(int firstNum, char operator, int secondNum) throws ArithmeticException{
switch (operator) {
case '+': //修正箇所
return firstNum + secondNum;
break;
上のように修正した結果コンパイルエラーがなくなった。
考察等
ソースコードに「文字」データを記述する場合は引用符(')で囲みます。そして「文字列」データを記述する場合は二重引用符(")を使います。
(中山清喬, 国本大吾 『スッキリわかるJava入門 第2版』p.50)
ということで
String型の文字列→""で囲む
char型の文字→''で囲む
と覚えておきたい。