华为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再赋值
}
}