【问题标题】:int[] from String or int[] from char[] [duplicate]来自 String 的 int[] 或来自 char[] 的 int[] [重复]
【发布时间】:2016-08-27 10:22:35
【问题描述】:

我想要做的是取一串数字,如“8675309”,然后根据字符串中的不同数字进行一些数学运算。我很乐意得到 8, 6, 7, 5, 3, 0, 9 然后使用索引,但到目前为止它们似乎给出了奇怪的数字(比如 51)。我只是想结束 myArray[0] + myArray[3] = output(这个例子是 8+5=13)

我拥有 6 本关于 Java 的书籍,但没有一本涵盖这一点。在网络上超过 6 小时(谷歌、stackoverflow、youtube 等),我在任何地方都找不到这个。 - 无论我如何搜索,我都会得到所有结果。

从已经填充的数组到已经定界的字符串,再到从字符串中丢弃除数字之外的所有内容,等等......

我尝试使用/修改我发现的内容,我能想到的最好的结果是 eclipse 对我大喊大叫,无法将 char 转换为 int。

    String str = cn;
    char[] charArray = str.toCharArray(); 

    String number = String.valueOf(cn);
    int[] digits1 = number.toCharArray();

    int newInt = charArray[0];  
    System.out.println(newInt);

“线程“主”java.lang.Error 中的异常:未解决的编译问题: 类型不匹配:无法从 char[] 转换为 int[]"

【问题讨论】:

  • 您可以将char 分配给int,但不能将char[] 分配给int[]。你读过你的那6本书吗?
  • int[] digits = str.chars().map(n -> n - '0').toArray();
  • @TimBiegeleisen 哇,找到多年前的副本真是太好了!我已经忘记了我已经回答了这个问题(而且我的旧答案也已经过时了)。谢谢!

标签: java arrays string char int


【解决方案1】:

您可以通过调用Character.digit(myChar, 10) 将表示十进制数字的单个char 转换为int。从toCharArray()得到的结果循环调用这个方法来构造你想要的ints数组:

String str = cn;
char[] charArray = str.toCharArray(); 
int[] digits = new int[charArray.length()];
for (int i = 0 ; i != digits.length() ; i++) {
    digits[i] = Character.digit(charArray[i], 10);
}

【讨论】:

    【解决方案2】:

    您可以通过将此类字符串转换为字符数组,然后将这些字符中的每一个解析为一个数字来从此类字符串中获取单个数字。

        String text = "8675309";
        char[] characters = text.toCharArray();
        List<Integer> digits = new ArrayList<>();
    
        for(char character : characters) {
            digits.add(Character.getNumericValue(character));
        }
    

    您可以通过遍历列表来访问每个数字。

    【讨论】:

      猜你喜欢
      • 2016-05-01
      • 2011-02-10
      • 1970-01-01
      • 2013-05-20
      • 2016-09-04
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多