Java报Type mismatch: cannot convert from String to char如何修复
报错根因
你遇到的Type mismatch: cannot convert from String to char错误本质是类型赋值不匹配:Scanner类的next()方法返回值是String类型,无法直接赋值给char类型变量。
除了这个直接触发报错的问题,你的代码还存在3处连锁逻辑错误:
- 字符数组初始化的长度参数要求是
int类型,原代码用char类型的变量n作为长度参数,不符合语法要求 - for循环的判断条件
i < n中,错误地将char类型变量作为循环边界的整数判断值 - 循环内
arr[i] = sc.next()同样是把String类型的返回值赋值给char类型的数组成员,也会触发相同的类型不匹配错误;且逻辑上你只需要读取一次用户输入的字符串,不需要循环多次调用输入方法。
修复方案
核心调整点:
- 用
String类型变量接收用户一次性输入的待反转字符串 - 调用字符串的
length()方法获取int类型的字符串长度,作为数组初始化长度或循环边界值 - 可以直接调用字符串自带的
toCharArray()方法快速得到字符数组,也可以通过循环调用charAt(index)方法逐位获取每个位置的字符 - 倒序遍历字符数组输出即可得到反转结果
修正后可运行代码
import java.util.*; class Firstjava { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter String to reverse"); // 读取用户输入的待反转字符串 String input = sc.next(); // 将字符串直接转为字符数组 char[] arr = input.toCharArray(); // 倒序遍历输出 for (int i = arr.length - 1; i >= 0; i--) { System.out.print(arr[i]); } sc.close(); } }
注:如果你需要反转后的每个字符之间用空格分隔,把输出语句改成
System.out.print(" " + arr[i]);即可。
如果你不想用toCharArray()方法,也可以用逐位取字符的写法实现,逻辑完全等价:
import java.util.*; class Firstjava { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter String to reverse"); String input = sc.next(); int len = input.length(); char[] arr = new char[len]; for (int i = 0; i < len; i++) { arr[i] = input.charAt(i); } for (int i = arr.length - 1; i >= 0; i--) { System.out.print(arr[i]); } sc.close(); } }
内容的提问来源于stack exchange,提问作者Japneet Singh
相关产品推荐
相关产品推荐

