Java代码报错Type mismatch: char与String类型不匹配的修复方法咨询
修复Java中"Type mismatch: cannot convert from char to String"错误
你的代码报错的核心原因很明确:你在把char类型的变量和String类型的字面量做比较。Java是强类型语言,不同类型的值不能直接用==做比较。
看你代码里的问题行:
if(ans == "Y") {
这里ans是char类型(你通过input.charAt(0)获取的单个字符),而"Y"是双引号包裹的字符串字面量,两者类型不兼容,所以编译器抛出了类型不匹配的错误。
两种修复方案:
方案1:直接用字符字面量比较(最直接)
把双引号的"Y"改成单引号的'Y',这样就和ans的char类型匹配了:
package kreki; import java.util.Scanner; public class Hungry { public static void main(String [] args) { String input; char ans; Scanner Hungry = new Scanner(System.in); System.out.println("Are You Hungry?"); input = Hungry.next(); ans = input.charAt(0); if(ans == 'Y') { // 这里改成单引号的字符字面量 System.out.println("Eat"); }else { System.out.println("Starve"); } Hungry.close(); } }
方案2:直接比较输入字符串(更灵活)
其实你完全不需要把字符串转成char,直接用字符串的比较方法,还能支持忽略大小写(比如用户输入y也能识别),体验更好:
package kreki; import java.util.Scanner; public class Hungry { public static void main(String [] args) { String input; Scanner Hungry = new Scanner(System.in); System.out.println("Are You Hungry?"); input = Hungry.next(); // 用equalsIgnoreCase忽略大小写,匹配Y/y if(input.equalsIgnoreCase("Y")) { System.out.println("Eat"); }else { System.out.println("Starve"); } Hungry.close(); } }
这里要注意:Java中比较字符串内容一定要用equals()或equalsIgnoreCase(),而不是==——==比较的是字符串对象的引用地址,不是实际内容,容易出问题。
内容的提问来源于stack exchange,提问作者kreki
相关产品推荐
相关产品推荐

