華爲2018春招校招的筆試題目第一題比較通俗易懂,就是單純的通過字符串處理就會解決的,這也是華爲筆試的特色,喜歡對字符串處理。然後就是順利進入到第二個題目,也就是一個如果之前有了解的話就會很容易,但是沒有了解的話就會變的特別難!
【題目】輸入兩個超大整形數,輸出他們的和!
題目很簡單,但是我們如果仔細看,就會發現int容納不了這麼大的整形數,於是第一想法就是利用字符串把她們讀進來,然後在charAt()分別獲取最低位,轉化成int在相加。
我做的時候直接應用了BigDecimal這個數據類型,簡單明瞭:
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DecimalFormat;
/**
* 運算情況主要涉及簡單的一系列運算符
* 還有就是針對於保留小數
* 還有就是超大文本對象的運算
* 最後就是涉及到類型的轉換
* @author admin
*
*/
public class Demo06 {
public static void main(String[] args) {
//2018華爲春招第二題
//超大整形數運算
BigInteger a,b,c;
a = new BigInteger("123456789987654321");
b = new BigInteger("445121541321331515");
//加法
c = a.add(b);
System.out.println(c);
//減法
c = a.subtract(b);
System.out.println(c);
//乘法
c = a.multiply(b);
System.out.println(c);
//除法
System.out.println(b.divide(a));
//取模
System.out.println(b.remainder(a));
System.out.println();
System.out.println("**********************************分割線**********************************");
System.out.println();
//保留小數位數的問題
double d = 1.3356;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(d));
System.out.println();
System.out.println("**********************************分割線**********************************");
System.out.println();
//運算進制的轉化問題
int intResult = 0;
intResult = (int) (1.5+2.5);
System.out.println(intResult);
System.out.println();
System.out.println("**********************************分割線**********************************");
System.out.println();
//a++和++a的區別
int i = 0;
System.out.println(i++);//先賦值再加1
i = 0;
System.out.println(++i);//先加1再賦值
}
}