[英]Incompatible Types String and Char
我不確定為什么會收到此錯誤。 我認為代碼總體上還可以,盡管我敢肯定,然后使用所有其他ifs的方法會更短。 問題是它說類型不兼容,我真的只是迷失了解決方法。 任何幫助,將不勝感激。
import java.util.Scanner;
public class MissionImpossible
{
public static void main(String [] args){
String lineOne, R2D2 = "";
Scanner in = new Scanner(System.in);
System.out.println("Please enter a word so I can see how many vowels it has.");
int count = 0;
lineOne = in.nextLine();
int word = lineOne.length();
for (int i = word -1; i>= 0; i--)
{
R2D2= lineOne.charAt(i);
if (R2D2== 'a'|| R2D2=='A')
count++;
else if (R2D2=='e'||R2D2=='E')
count++;
else if (R2D2=='o'|| R2D2=='O')
count++;
else if (R2D2=='u'||R2D2=='U')
count++;
else if (R2D2=='y'||R2D2=='Y')
count++;
}
System.out.println(count);
}
}
char
不是String
。 將R2D2
聲明為char
char R2D2 = '';
要檢查元音,請使用以下方法,並在for
循環中重用此方法並count
元音的出現次數:
static boolean isVowel(char ch) {
ch = Character.toLowerCase(ch);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
return true;
}
return false;
}
String lineOne, R2D2 = "";
R2D2是一個字符串, if (R2D2== 'a'|| R2D2=='A')
,您正在與一個字符進行比較
嘗試這個
對於(int i = word -1; i> = 0; i--){R2D2 = lineOne.charAt(i);
if (R2D2=="a"|| R2D2=="A")
count++;
else if (R2D2=="e"||R2D2=="E")
count++;
else if (R2D2=="o"|| R2D2=="O")
count++;
else if (R2D2=="u"||R2D2=="U")
count++;
else if (R2D2=="y"||R2D2=="Y")
count++;
}
一方面,您應該使用.equals()
而不是==
進行比較
如果要修復長鏈,可以執行以下操作:
if (anyOf(R2D2, "AaEeIiOoUuYy".toCharArray())
后來有:
private static boolean anyOf(char in, char[] items) {
for (int i = 0; i < items.length; i++) {
if (in == items[i])
return true;
}
return false;
}
R2D2
的類型為String,而字符周圍的單引號(如'a'
)使它成為字符文字。 無法分配字符串或將其與字符進行比較。 那就是原因。
代碼中存在兩種問題。
1. `R2D2= lineOne.charAt(i); // a character being assigned to a String variable`
解決方案: R2D2 = Character.toString(lineOne.charAt(i));
2. `if (R2D2== 'a'|| R2D2=='A')` //strings being compared with char literals.
解決方案: if (R2D2.equals("a")|| R2D2.equals("A"))
僅供參考,您還可以改善維護。
if(R2D2.equalsIgnoreCase('a'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.