2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Java培訓:任意大整數的相加運算

更新時間:2022-09-15 來源:黑馬程序員 瀏覽量:

  大家好,今天我給大家帶來了一個小程序,它實現了對兩個任意大整數的相加運算。

   我們知道,在Java中對整數進行運算可以使用int類型,如果范圍不夠,可以使用long,再大可以使用double,如果想對更大的整數運算可以使用BigInteger類。今天,我們就自己來編寫一段程序,實現對兩個任意大的整數的加法運算。

   本文將按照以下的步驟講解:

  1. 實現思路

  2. 完整代碼清單

  3. 結束語

  一. 實現思路

  1.1 存儲方式

   由于要表示一個很大的數字,所以,不能用基本類型存儲。這里我們使用String存儲,例如:

String s1 = "1234567890123456789012345";
String s2 = "66666666666666666666";

  1.2 運算方式

   很顯然,兩個String類型不能做加法運算,所以我們要逐一截取出兩個字符串的最后兩個數字,然后將它們轉換為int類型再做加法運算,并將結果再存儲到一個新的結果字符串中,這樣從低位到高位,依次相加,最后的結果字符串中就是相加結果。我們先看一個簡單的例子。

  1.3 簡單示例

  - 例如有以下兩個存儲了數字的字符串:

String s1 = "1234";
String s2 = "18";

  - 我們要截取出兩個字符串的最低位4和8,并轉換為int值,然后進行加法運算。但這里涉及到一個“進位”的問題,如果4 + 8,應該是:進1落2,如果是4 + 3,應該表示為:進0落7,所以我們要定義變量這個“進位”的值。

String result = "";//存儲結果字符串
int c = 0;//存儲進位的值

//截取兩個字符串的最末尾數字
String r1 = s1.substring(s1.length() - 1);
String r2 = s2.substring(s2.length() - 1);
//將最后一位的字符串轉換為int值
int n1 = Integer.parseInt(r1);
int n2 = Integer.parseInt(r2);

//相加
int v = n1 + n2;

//取出個位,并添加到result字符串中
result += v % 10;
//取出進位值,存儲到c中
c = v / 10;

//更改兩個字符串,分別去掉最后一位
s1 = s1.substring(0, s1.length() - 1);
s2 = s2.substring(0, s2.length() - 1);

//測試打印
System.out.println("結果字符串:" + result);
System.out.println("進位值:" + c);
System.out.println("s1去掉最后一位:" + s1);
System.out.println("s2去掉最后一位:" + s2);

  程序運行后,打印結果為:

  ~~~java

  結果字符串:2

  進位值:1

  s1去掉最后一位:123

  s2去掉最后一位:1

  ~~~

   根據這個思路,我們就可以使用一個循環,從低位到高位分別計算每位的和。

  二. 完整代碼清單

package com.heima.se;

/**
 * 大整數加法運算
 * 1、彈出兩個大整數最后面的整數
 * 2、用這兩個整數以及進位值求和
 * 3、求和的整數個位計算結果,添加到結果中;十位為進位值,下一次循環使用。
 */
public class BigIntegerAddition {
    public static void main(String[] args) {//1234634556790123455679011
        String s1 = "1234567890123456789012345";
        String s2 = "66666666666666666666";
        System.out.println(add(s1, s2));
    }

    /**
     * 大整數加法運算
     * @param s1
     * @param s2
     * @return
     */
    public static String add(String s1, String s2) {
        String result = "";//結果
        int c = 0;//進位值,例如兩個個位數相加有進位,那么c表示的就是進位
        while(!s1.isEmpty() || !s2.isEmpty()|| c > 0) {//如果兩個整數以及進位都為空,那么就結束循環
            int num1 = 0;//第一個整數當前位的值,默認為0
            if(!s1.isEmpty()) {//如果第一個整數不為空
                num1 = Integer.parseInt(s1.substring(s1.length()-1));//獲取最后一個字符轉換成整數
                s1 = s1.substring(0, s1.length()-1);//獲取后刪除最后一個字符
            }

            int num2 = 0;//第二個整數當前位的值,默認為0
            if(!s2.isEmpty()) {
                num2 = Integer.parseInt(s2.substring(s2.length()-1));
                s2 = s2.substring(0, s2.length()-1);
            }

            int res = num1 + num2 + c;//計算兩個整數當前位及進位的和
            result = res % 10 + result;//因為res可能會有進位,所以res可能會是兩位數,所以只取個位,所以模10,然后再與之前的結果連接
            c = res / 10;//保存進位的結果,在下一次循環時使用。
        }
        return result;
    }
}

  三. 結束語

   在今天這個程序中,我們僅僅使用了String類及Integer類的一些相關方法就實現了兩個任意大整數的相加,通過循環,從低位到高位,逐位數字的累加,并將結果存儲到一個新字符串中,是不是很簡單!后續的文章,我會為大家帶來更多、更有趣、更實用的一些案例,請大家持續關注哦!

分享到:
在線咨詢 我要報名
和我們在線交談!