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();                            ///关闭流,只是养成好习惯吧。。。  
    }
}

 

转载于:https://www.cnblogs.com/ya-cpp/p/4030013.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值