首页 > 代码库 > uva-465(overflow)

uva-465(overflow)

这道题很奇葩啊,WA了4发。。。妈的,用c++也不至于,输出竟然要原样输出。。。

例如:

  0000000000000000006 * 000000000000001

  输出是 0000000000000000006 * 000000000000001

  而不是 6 * 1

import java.io.*;import java.util.*;import java.math.*;public class Overflow {    public static void main(String[] args){        Scanner sc = new Scanner(new BufferedInputStream(System.in));        BigDecimal bd1, bd2, bd3, ans;        String st1;                                                                                         bd3 = new BigDecimal("2147483647");   ///int 4位  -2147483648 ~ 2147483647 既 0x7ffffff        while(sc.hasNextLine()){            st1 = new String(sc.nextLine());            System.out.println(st1);          ///原样输出。。。            String[] str= st1.split("[\\+\\*]"); ///正则表达式,明天再写  split() 字符串分割方法                        int i = 0, len = st1.length();            boolean flag = false;            while(i < len){                if((st1.charAt(i)) == ‘+‘){  //String类中用于获取每一个字符的方法                    flag = true;                }                i++;            }            bd1 = new BigDecimal(str[0].trim());  ///trim()方法,用于清空空格            bd2 = new BigDecimal(str[1].trim());            if(flag == true){                ans = bd1.add(bd2);            }else{                ans = bd1.multiply(bd2);            }                            if(bd1.compareTo(bd3) > 0){                       ///compareTo()方法,用于比较两个对象间的大小, 返回 大于0 相当于  bd1 > bd3                System.out.println("first number too big");            }            if(bd2.compareTo(bd3) > 0){                System.out.println("second number too big");            }            if(ans.compareTo(bd3) > 0){                System.out.println("result too big");            }        }        sc.close();                            ///关闭流,只是养成好习惯吧。。。      }}

 

uva-465(overflow)