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

Java:添加两个数字字符数组,java,arrays,char,addition,Java,Arrays,Char,Addition,我的问题似乎很简单,但我试着寻找一个具体的答案,但没有找到。我找到了与我一直在寻找的答案相似的答案,但它们只会让我更加困惑: 我要做的就是添加两个字符数组并打印结果数组。该项目处理二进制数,但我稍后将处理base-2算法,所以只需假设它们是base-10数字 char[] array = {'1', '0', '0', '1'}; char[] array2 = {'1', '1', '0', '0'}; char[] sum = new char[4]; for(i=0; i < 4;

我的问题似乎很简单,但我试着寻找一个具体的答案,但没有找到。我找到了与我一直在寻找的答案相似的答案,但它们只会让我更加困惑:

我要做的就是添加两个字符数组并打印结果数组。该项目处理二进制数,但我稍后将处理base-2算法,所以只需假设它们是base-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] + " ");
    }
char[]数组={'1','0','0','1'};
char[]array2={'1','1','0','0'};
字符[]和=新字符[4];
对于(i=0;i<4;i++){
和[i]=char(数组[i]+array2[i]);
系统输出打印(和[i]+“”);
}
当我运行它的时候,我的答案是“b”,所以我猜似乎发生了一些ASCII转换?我的预期答案应该是“2101”,我意识到问题在于我的演员阵容,我只是不知道如何继续。Sum必须作为程序参数的一部分保留为字符数组


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

试试这个。它起作用了。将此总和变量从
char[]
array更改为
int[]
array

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] + " ");
        }
    }
publicstaticvoidmain(字符串[]args){
char[]数组={1',0',0',1'};
char[]array2={'1','1','0','0'};
int[]和=新的int[4];
对于(int i=0;i<4;i++){
sum[i]=Integer.parseInt(数组[i]+“”)+Integer.parseInt(数组2[i]+“”);
系统输出打印(和[i]+“”);
}
}
输出

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


尝试将角色强制转换为int。差不多

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

类似地,您可以继续进行rest,然后执行加法。如果您想添加1+1并获得2,则不要使用字符数组。使用int数组,或使用


inti=Integer.parseInt(数组[0]+“”)

问题在于添加。 基本上,您需要做的是求第一个字符的和,数组[i]+(array2[i]-“0”)。
这是因为对于第一个字符,您得到的是正确的ASCII-0索引值,但第二个字符应该是ASCII 0索引的多个步骤,因此“-0”只会给您带来差异。

您可以使用
character.toString()
char
转换为
字符串。其次,使用
Integer.parseInt()
char
转换为
int
。然后将这些整数相加。最后,使用
Character.forDigit(数字,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]);
}
当然,如果使用整数数组,可以避免这种情况:

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

使用int数组而不是char数组,并将结果存储到sum char数组中。但我们将使用int数组来存储结果。这将帮助您处理数字运算

您认为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] + " ");
}
int[]数组={1,0,0,1};
int[]array2={1,1,0,0};
int[]和=新的int[4];
对于(int i=0;i<4;i++){
和[i]=数组[i]+array2[i];
系统输出打印(和[i]+“”);
}

我觉得这听起来像是采访中提出的问题。问题的目的是将两个数组中的整数字符相加,并将结果作为字符数组输出

    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'}

此解决方案可处理总和可能以进位结束的所有情况。

为什么不使用
int[]
呢?字符不是数字,为什么需要'1'+'1'='2'?总和[i]=char(array1[i])+char(array2[i]);
    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'}