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



我的问题看起来很简单,但我尝试搜索特定的答案,但没有找到。我找到了与我一直在寻找的答案相似的答案,但它们只会让我更加困惑:

我所要做的就是添加两个字符数组并打印得到的数组。这个项目处理二进制数,但我稍后会处理以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] + " ");
    }

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

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

您可以使用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};

您认为ASCII数学正在发挥作用的假设是正确的。char变量被美化为int变量。添加char变量基本上采用ASCII十进制值,将这些值相加,然后给出ASCII字符表示。这有点过于简化了,但我想告诉你为什么会发生这种情况。

例如,如果'1'是ASCII中的十进制49,则'1'+'1'=49+49=98。ASCII中的98是CCD_ 16。

我建议将您使用的阵列类型切换为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] + " ");
}

尝试将字符强制转换为int。类似的东西

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

类似地,您可以继续休息,然后执行添加

如果您想添加1+1并获得2,那么不要使用char数组。使用int数组,或使用将其强制转换为int

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

问题出在添加中。基本上,您需要对第一个字符array[i]+(array2[i]-'0'(求和。这是因为对于第一个字符,您将获得一个正确的ASCII-0索引值,但第二个字符应该只是ASCII 0索引的几个步骤,因此"-'0'"只会给您带来差异。

试试这个。它有效。将此和变量从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秒(

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

我觉得这听起来像是面试中问的问题。该问题的目的是将两个数组中的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'}

这个解决方案可以处理所有的情况,其中的总和可以结束进位。

相关内容

  • 没有找到相关文章

最新更新