错误:不兼容的类型: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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
BlueJ 错误:“不兼容的类型:int 无法转换为 java.lang.String”和“不兼容的类型:java.lang.String 无法转换为 int”
不兼容的类型:java.lang.Object 无法转换为 java.lang.String
错误:(54,91)错误:不兼容的类型:int无法转换为String