有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何添加两个内容为number的字符数组?

我想知道如何添加两个字符数组的内容
比如说,

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

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


共 (3) 个答案

  1. # 1 楼答案

    由于这很可能是一个学习练习,因此以下是完成该练习的一些要点:

    • ^表示数字的{}是数字常量,表示从'0''9'的UNICODE代码点,包括在内
    • 要从char值中获取数字值,请从中减去'0',如下所示:int digitA = a[i] - '0';
    • 要添加两个“数字”,请从每个数字的后面开始,然后以循环的方式向后移动到前面
    • 根据加法的结果小于或大于10,保留一个“进位”值,即0或1
    • 在每个步骤中,将digitA添加到digitB,并将carry添加到总和
    • 通过将总和与10进行比较,为下一个操作进行进位
    • 通过对结果应用sum % 10来获取该总和的最后一位
    • 通过将'0'添加到sum % 10中来生成结果的数字,并将其放入结果中
    • 请注意,如果最高数字有一个carry,结果数组可能比两个数组中最长的数组长
    • 您需要在循环中维护三个索引—一个用于结果,两个数字各两个
    • 您不知道结果是否需要一个额外的数字,因此可能更容易预先为一个额外的数字分配空间,然后在结果为零时将其删除
  2. # 2 楼答案

    迭代两个数组并添加结果

    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]);
    }
    

    显然,这里有很多边缘情况是不好的。但这是我能想象到的问题最直接的答案

  3. # 3 楼答案

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

    /* 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]);
            }
    
        }
    }