【问题标题】:error: incompatible types: char cannot be converted to String - Java [duplicate]错误:不兼容的类型:char 无法转换为字符串 - Java [重复]
【发布时间】: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 这样的问题和这些答案?

标签: java


【解决方案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'
      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多