如何添加内容为数字的两个char数组?

时间:2014-03-07 00:53:19

标签: java

我想知道如何添加两个char数组的内容 例如,

char[] a = {1,2,3}
char[] b = {1,2,3}
//the output should be c  
char[] c = {2,4,6}

我知道这不是正确的编码,但我需要知道如何做到这一点。

3 个答案:

答案 0 :(得分:2)

由于这很可能是一次学习练习,所以有一些指示可以完成它:

    表示数字的
  • char是表示从'0''9'的UNICODE代码点的数字常量。
  • 要从char值中获取数字值,请从中减去'0',如下所示:int digitA = a[i] - '0';
  • 要添加两个“数字”,请从每个数字的后面开始,然后循环回到前面
  • 保留“进位”值,该值为0或1,具体取决于加法结果小于10或大于10
  • 在每一步中,将digitA添加到digitB,然后将carry添加到总和中。
  • 通过将总和与十进行比较,为下一步操作进行进位。
  • 通过将sum % 10应用于结果来获取该总和的最后一位数。
  • '0'添加到sum % 10,并将其放入结果
  • ,以显示结果的数字
  • 请注意,如果最高位数为carry,则结果数组可能比两个数组中的最长数组长。
  • 您需要在循环中维护三个索引 - 一个用于结果,两个用于两个数字
  • 您不知道结果是否需要额外的数字,因此可能更容易为额外的数字预先分配空间,然后在结果为零时将其删除。

答案 1 :(得分:0)

迭代两个数组并添加结果

public static void main(String[] args) {
    char[] a = new char[] {1,2,3};
    char[] b = new char[] {1,2,3};
    char[] sum = new char[3];

    for(int i = 0; i < 3; i++)
        sum[i] = (char)((int)a[i] + (int)b[i]);
}

显然,这里有很多边缘案例并不好。但这是我能想象的最直接的答案。

答案 2 :(得分:0)

对于你的问题,我冒昧地写了一个正确的代码,说明我从你的问题中得到了什么。

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        char[] a = {1,2,3};
        char[] b = {1,2,3};
        char[] c = {0,0,0};
        for (int i=0; i< 3; i++){
            c[i] = Character.forDigit(a[i]+b[i],10);
            System.out.println(c[i]);
        }

    }
}