【问题标题】:How do I convert a char [] to an int?如何将 char [] 转换为 int?
【发布时间】:2015-04-07 16:41:18
【问题描述】:

我有一个问题,我需要获取一个字符数组(仅由数字组成)并将其值打印为整数。

public static int ParseInt(char [] c) {
    //convert to an int
    return int;
}

数组看起来像这样:

char [] c = {'3', '5', '9', '3'}

并且会给出以下输出:

3593

我该怎么做呢?

【问题讨论】:

  • Java char array to int的可能重复
  • 请接受以下答案之一,以便其他有相同问题的人找到解决方案。

标签: java arrays char


【解决方案1】:
char[] c = {'3', '5', '9', '3'};
int number = Integer.parseInt(new String(c));

【讨论】:

    【解决方案2】:

    另一种方式是 -

    public static int ParseInt(char [] c) {
        int temp = 0;
        for(int i = 0;i<c.length;i++) {
            int value = Integer.parseInt(String.valueOf(c[i]));
            temp = temp * 10 + value;
        }
        return temp;
    }
    

    【讨论】:

    • 我会发现他们由于某种原因不能使用 String 类,也可以使用int value = c[i] - '0'
    【解决方案3】:

    这可能不是一个好的或标准的方法,但您可以将其用作其他解决方案。在下面的代码中 Arrays.toString(c) 将字符数组转换为字符串,然后将 [],' 替换为空白,然后将字符串类型转换为 int。

    public static void main (String[] args) throws java.lang.Exception
        {
            char [] c = {'3', '5', '9', '3'};
            String n=Arrays.toString(c).replace("[","").replace("]","").replace(",","").replace("'","").replace(" ","");
            int k=Integer.parseInt(n);
            System.out.println(k);
        }
    

    DEMO

    【讨论】:

    • 这是一种将 char 数组转换为字符串的真正卑鄙的方法...... :)
    • @AndyTurner 只是试图提供一种不同的方式来代替遍历每个数组元素。这肯定比遍历每个元素花费的时间更少。
    • 我知道,这就是 :) 的原因
    • 你能进一步解释一下吗,@singhakash? Arrays.toString() 迭代数组的每个元素以创建字符串,然后每个 replace 迭代支持相应字符串的 char 数组的每个元素。如果我没有误会的话,这种做法会遍历至少六个不同数组的每个元素。
    【解决方案4】:

    你可以使用Character.getNumericValue()函数

    public static int ParseInt(char [] c) {
        int retValue = 0;
        int positionWeight = 1;
        for(int i=c.lenght-1; i>=0; i--){
            retValue += Character.getNumericValue(c[i]) * positionWeight;
            positionWeight += 10;
        }
        return retValue;
    }
    

    注意我从length-1 开始并循环直到0(根据位置权重约定)。

    【讨论】:

      【解决方案5】:

      因为它只包含数字。因此,我们可以这样解决:

      int result = 0;
      for (int i = 0; i < c.length; ++i) {
          result = result * 10 + (c[i] - '0');
      }
      return result;
      

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2017-03-21
        • 2011-04-09
        • 2018-05-15
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        • 2011-12-15
        • 2015-07-11
        相关资源
        最近更新 更多