错误:不兼容的类型:char 无法转换为字符串 - Java [重复]

Posted

技术标签:

【中文标题】错误:不兼容的类型:char 无法转换为字符串 - Java [重复]【英文标题】:error: incompatible types: char cannot be converted to String - Java [duplicate] 【发布时间】:2018-07-05 19:58:25 【问题描述】:

这只是我有问题故障排除的代码的一部分。

static int checkConcat(String number) 
        TreeSet<Integer> a = new TreeSet<Integer>();
        for(int i=0; i<number.length(); i++) 
            a.add(Integer.parseInt(number.charAt(i)));
        

我得到的错误是:

错误:不兼容的类型:char 无法转换为字符串

代码有什么问题,在这种情况下我该如何解决?

【问题讨论】:

Integer.parseInt 需要 String,而不是 char 使用Character.digit 你问了一个(简单的)问题,你有几个答案。那么,你为什么不接受其中之一呢?在我看来,在这些答案中至少为您提供了一种解决方案。 @Dukeling,我不是故意粗鲁的,但是对于 this 这样的问题和这些答案? 【参考方案1】:

您可以轻松地将字符转换为字符串。

char aCharacter = 'c';
String aCharacterAsString = String.valueOf(aCharacter);

所以在你的情况下:

a.add(Integer.parseInt(String.valueOf(number.charAt(i))));

【讨论】:

【参考方案2】:

Integer.parseInt(String s) 的参数类型为 String,而不是 number.charAt(i) 返回的 char

转换为String

a.add(Integer.parseInt("" + number.charAt(i)));

【讨论】:

你能用我的代码重写解决方案来解决上述问题吗? 我当然可以,但你为什么不自己试试呢?【参考方案3】:

单个字符是char,而不是String。虽然您可以使用下面描述的方法从char 构造一个单字符串,但应该使用不同的 API 逐位解析数字:

for(int i=0; i<number.length(); i++) 
    a.add(Character.digit(number.charAt(i), 10));

要在 Java 中从 char 构造单字符串,请使用 String.valueOf 方法:

String singleDigit = String.valueOf(number.charAt(i));

【讨论】:

【参考方案4】:

charAt 返回字符串的一个字符,因此返回类型是char 而不是string 转换为字符串使用String.valueOf 方法:

String.valueOf(number.charAt(i))

或者不要使用Integer.parse,只需从字符中减去'0'即可将其转换为数字值。这将是一种更简单、更有效的转换单个数字值的方法。

number.charAt(i) -'0'

【讨论】:

从 C 中借来的减去零字符的技巧从一开始就对 Java 来说是陌生的,因为 Java 标准库有 Character.digit 方法。老实说,我多年来一直不知道它的存在,努力在我的 Java 代码中编写ch-'0'

以上是关于错误:不兼容的类型:char 无法转换为字符串 - Java [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++奇怪的char *参数问题(不兼容的类型)

BlueJ 错误:“不兼容的类型:int 无法转换为 java.lang.String”和“不兼容的类型:java.lang.String 无法转换为 int”

不兼容的类型:java.lang.Object 无法转换为 java.lang.String

错误:(54,91)错误:不兼容的类型:int无法转换为String

不兼容的类型:条件表达式 void 中的错误类型无法转换为布尔值。请协助

使用 Kotlin 和泛型进行数据绑定。错误:不兼容的类型:对象无法转换为列表