国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用字符串模擬兩個大數相加——java實現

2019-11-14 15:19:58
字體:
來源:轉載
供稿:網友

問題:

  大數相加不能直接使用基本的int類型,因為int可以表示的整數有限,不能滿足大數的要求。可以使用字符串來表示大數,模擬大數相加的過程。

思路:

    1.反轉兩個字符串,便于從低位到高位相加和最高位的進位導致和的位數增加;

            2.對齊兩個字符串,即短字符串的高位用‘0’補齊,便于后面的相加;

            3.把兩個正整數相加,一位一位的加并加上進位。

具體代碼如下:

 /**     * 用字符串模擬兩個大數相加     * @param n1 加數1     * @param n2 加數2     * @return   相加結果     */    public static String add2(String n1,String n2)    {    StringBuffer result = new StringBuffer();    //1、反轉字符串    n1 = new StringBuffer(n1).reverse().toString();        n2 = new StringBuffer(n2).reverse().toString();        int len1 = n1.length();    int len2 = n1.length();    int maxLen = len1 > len2 ? len1 : len2;    boolean nOverFlow = false; //是否越界    int nTakeOver = 0 ; //溢出數量        //2.把兩個字符串補齊,即短字符串的高位用0補齊    if(len1 < len2)    {        for(int i = len1 ; i < len2 ; i++)        {        n1 += "0";        }    }    else if (len1 > len2)    {        for(int i = len2 ; i < len1 ; i++)        {        n2 += "0";        }    }        //3.把兩個正整數相加,一位一位的加并加上進位    for(int i = 0 ; i < maxLen ; i++)    {        int nSum = Integer.parseInt(n1.charAt(i) +"") + Integer.parseInt(n2.charAt(i) +"");                if(nSum >= 10)        {        if(i == (maxLen - 1))        {            nOverFlow  = true;        }        nTakeOver = 1;        result.append(nSum - 10);        }        else        {        nTakeOver = 0;        result.append(nSum);        }    }        //如果溢出的話表示位增加了    if(nOverFlow)    {        result.append(nTakeOver);    }    return result.reverse().toString();    }

 

測試:

 public static void main(String[] args)     {    String str = add2("911","222");    System.out.PRintln(str);    }

 

結果:

1133

 

 

  致謝:感謝您的閱讀!

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西乌珠穆沁旗| 浠水县| 开阳县| 广饶县| 盘山县| 武平县| 沅江市| 确山县| 广昌县| 丰城市| 辽阳市| 湖州市| 台安县| 漠河县| 读书| 兴文县| 林甸县| 蓬溪县| 彭泽县| 正定县| 黑龙江省| 定西市| 视频| 察隅县| 楚雄市| 乌恰县| 石林| 乃东县| 大姚县| 云霄县| 吉林省| 甘孜县| 建德市| 凤庆县| 永丰县| 水城县| 紫金县| 威信县| 剑川县| 望江县| 南丰县|