Java:添加两个数字字符数组

时间:2014-03-12 05:47:16

标签: java arrays char addition

我的问题似乎很简单,但我已经尝试过搜索特定的答案而没有找到答案。我找到了类似于我一直在寻找的答案,但他们只是让我更加困惑:

我想要做的就是添加两个字符数组并打印生成的数组。该项目涉及二进制数字,但我稍后会处理base-2算法,所以只需假装它们是基数为10的数字。

char[] array  = {'1', '0', '0', '1'};
char[] array2 = {'1', '1', '0', '0'};
char[] sum = new char[4];
for(i=0; i < 4; i++){
    sum[i] = char(array[i] + array2[i]);
    System.out.print(sum[i] + " ");
    }

我的答案是&#34; b&#39; b&#34;当我运行它时,似乎有些ASCII转换正在发生我猜?我的预期答案应该是&#34; 2101&#34;我意识到问题出在我的演员阵容中,我只是不知道如何继续。 Sum必须保留为字符数组,作为程序参数的一部分。

编辑:我知道使用int数组求和可以解决这个问题。正如我在原始帖子中所述,sum必须保留一个字符数组作为该项目参数的一部分。

8 个答案:

答案 0 :(得分:1)

您可以使用Character.toString()char转换为String。其次,使用Integer.parseInt()char转换为int。然后添加那些整数。最后,使用Character.forDigit(digit, 10)int(数字)转换为char

char[] array = { '1', '0', '0', '1' };
char[] array2 = { '1', '1', '0', '0' };
char[] sum = new char[4];

for (int i = 0; i < 4; i++) {
    sum[i] = Character.forDigit(
            Integer.parseInt(Character.toString(array[i])) + Integer.parseInt(Character.toString(array2[i])),
            10);
    System.out.println(sum[i]);
}

<强>输出:

2
1
0
1

当然,如果你使用数组整数,你可以避免这种情况:

int[] array = {1, 0, 0, 1};

答案 1 :(得分:1)

您对ASCII数学发挥作用的假设是正确的。 char变量是引人入胜的int变量。添加char变量基本上采用ASCII十进制值,添加这些值,然后为您提供ASCII字符表示。这有点过于简单了,但我想让你知道为什么会这样。

例如,如果'1'在ASCII中为小数49,则'1' + '1' = 49 + 49 = 98. ASCII中的98为'b'

我建议您只使用int

切换所用数组的类型
int[] array  = {1, 0, 0, 1};
int[] array2 = {1, 1, 0, 0};
int[] sum = new int[4];
for(int i = 0; i < 4; i++) {
    sum[i] = array[i] + array2[i];
    System.out.print(sum[i] + " ");
}

答案 2 :(得分:0)

试试这个。有用。将此sum变量从char[]数组更改为int[]数组

public static void main(String[] args) {
        char[] array = {'1', '0', '0', '1'};
        char[] array2 = {'1', '1', '0', '0'};
        int[] sum = new int[4];
        for (int i = 0; i < 4; i++) {
            sum[i] = Integer.parseInt(array[i] + "") + Integer.parseInt(array2[i] + "");
            System.out.print(sum[i] + " ");
        }
    }

输出

  

运行:   2 1 0 1建立成功(总时间:0秒)

答案 3 :(得分:0)

尝试将角色转换为int。

之类的东西
int i = Integer.parseInt(array[0] + "");

同样,您可以继续休息,然后执行添加

答案 4 :(得分:0)

如果要添加1 + 1并获得2,则不要使用char数组。使用int数组,或使用

将其强制转换为int

int i = Integer.parseInt(array[0] + "");

答案 5 :(得分:0)

问题在于您的添加。 基本上,你需要做的是将第一个字符,array [i] +(array2 [i] - &#39; 0&#39;)相加。 这是因为对于第一个字符,您将获得正确的ASCII-0索引值,但第二个字符应该是ASCII 0索引中的一些步骤,因此&#34; - &#39 ; 0&#39;&#34;,会给你带来差异。

答案 6 :(得分:0)

使用int数组而不是char数组并将结果存储到sum char数组中。但是使用int数组作为我们存储结果的方法。这将有助于您处理数值运算

答案 7 :(得分:0)

我认为这听起来像是在采访中提出的一个问题。问题的目的是从两个数组中添加 Integer 字符,并将结果作为字符数组输出。

    char[] a = { '4', '5', '6' };
    char[] b = { '7', '8', '9' };
    Integer c = Integer.parseInt(String.valueOf(a)) + Integer.parseInt(String.valueOf(b)); //456 + 789 = 1245
    final char[] d = c.toString().toCharArray(); // d = {'1',2,'4','5'}

此解决方案处理总和最终可能带有进位的所有情况。