Java-100 位以上的整数运算 (小垃圾只写出了加法)

昏黄のすみ 灰色的雾蒙着日出前的眼睛 本文由博客端 http://localhost 主动推送

/**
     * 将通过它俩来进行运算
     */
    private int[] xints,yints;

    // 默认给两个字符串前面都加上一个零   为了解决两数相加多一位的问题
    public String add(String x,String y){
        return add(new StringBuffer(x).insert(0,"0"),new StringBuffer(y).insert(0,"0"));
    }


    /**
     * 加法操作
     * @param x :第一个数值
     * @param y :第二个数值
     * @return :返回x与y相加的结果
     */
    private String add(StringBuffer x,StringBuffer y){
        /**
         * c : 两个字符串之间的差值,用来持平长度
         * j : 两个int值的和,用来判断下一个是否进一
         */
        int c = x.length()-y.length(),j=0;
        StringBuffer temp = new StringBuffer("");
        for (int i = 0; i < Math.abs(c); i++) {
            //差值多大就补多少个0,方便相加
            temp.append(0);
        }
        //用来存储相加后的值(单个)
        List<Integer> sum = new ArrayList<>();

        //transitionInts : 返回最大长度(两个字符串)   并在内部将两个字符串拆分出两个int数组
        for (int i = transitionInts(x,y,c,temp) - 1,listIndex=0; i >= 0; i--,listIndex++) {
        //将两个值相加的结果添加到集合中   判断: 如果相加的结果大于9(进一)  则将上一个结果减10,当下的加1   
             sum.add(j =  (xints[i]+yints[i])+(j<9?0:sum.set(listIndex-1, j - 10).intValue()/10));
        }
        //将临时StringBuffer清空  等下来装最后的值
        temp.setLength(0);
        for (int i = sum.size()-1; i >=0 ; i--) {
            temp.append(sum.get(i));
        }
        return temp.toString();
    }

    /**
     *
     * @param s : 传入一个字符串将它变成Int数组
     * @return : Int数组
     */
    public int[] stringToInts(String s) {
        int[] ints = new int[s.length()];
        for (int i = 0; i < s.length(); i++) {
            ints[i] = Integer.parseInt(s.substring(i, i + 1));
        }
        return ints;
    }

    /**
     * 创建int数组
     * @param x
     * @param y
     */
    private Integer transitionInts(StringBuffer x,StringBuffer y,int c,StringBuffer temp){
       int max_Index = y.length();
        if(c>0){
            //最大长度
            max_Index = x.length();
            yints = stringToInts(temp.append(y).toString());
            xints = stringToInts(x.toString());
            return max_Index;
        }
        yints = stringToInts(y.toString());
        xints = stringToInts(temp.append(x).toString());
        return max_Index;
    }*
   

成功算出

结果.png

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2812 引用 • 8043 回帖 • 749 关注
2 操作
hunhuang 在 2020-09-07 15:02:25 更新了该帖
hunhuang 在 2020-09-07 14:57:24 更新了该帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • yechuan

    加法做出来了,乘除减还会远么,期待你哦