char数组转int数组

新手上路,请多包涵

我试图将一个字符串转换为一个整数数组,这样我就可以对它们执行数学运算。我在使用以下代码时遇到问题:

 String raw = "1233983543587325318";

char[] list = new char[raw.length()];
list = raw.toCharArray();
int[] num = new int[raw.length()];

for (int i = 0; i < raw.length(); i++){
    num[i] = (int[])list[i];
}

System.out.println(num);

这给了我一个“不可转换类型”错误,需要:int [] found:char 我还尝试了其他一些方法,如 Character.getNumericValue 并直接分配它,没有任何修改。在那些情况下,它总是输出相同的垃圾“[I@41ed8741”,无论我使用什么转换方法或(!)字符串的实际值是什么。它与unicode转换有关吗?

原文由 daedalus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 846
2 个回答

您的解决方案存在许多问题。第一个是循环条件 i > raw.length() 是错误的 - 你的循环永远不会执行 - 条件应该是 i < raw.length()

第二是演员阵容。您正在尝试转换为整数数组。事实上,由于结果是一个 char,您不必转换为 int - 转换将自动完成。但是转换后的数字并不是你想的那样。它不是您期望的整数值,但实际上是 char 的 ASCII 值。因此,您需要减去零的 ASCII 值以获得您期望的整数值。

第三个是您尝试打印结果整数数组的方式。您需要遍历数组的每个元素并将其打印出来。

     String raw = "1233983543587325318";

    int[] num = new int[raw.length()];

    for (int i = 0; i < raw.length(); i++){
        num[i] = raw.charAt(i) - '0';
    }

    for (int i : num) {
        System.out.println(i);
    }

原文由 auser 发布,翻译遵循 CC BY-SA 3.0 许可协议

Java 8 中的两种方式:

 String raw = "1233983543587325318";

final int[] ints1 = raw.chars()
    .map(x -> x - '0')
    .toArray();

System.out.println(Arrays.toString(ints1));

final int[] ints2 = Stream.of(raw.split(""))
    .mapToInt(Integer::parseInt)
    .toArray();

System.out.println(Arrays.toString(ints2));

第二种解决方案可能效率很低,因为它使用正则表达式并为每个数字创建字符串实例。

原文由 Martin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏