暑假集训(简单java应用)

在做ACM相关题目是经常会遇到大数也就是很大的数据在c/c++中即使使用double类型有1e306但在1e100以后会变的非常不精确 

误差很大,这时候就要用java处理,这里简单介绍一下java的使用;

进入到eclipse界面

第一步:file->new->java project->起名->finish

第二步:进入到刚才建的工程里,右键src->new->package->起名->finish

第三步:进入到刚才建的package里,右键name->new->class->起名(这里起名要注意,因为比赛时如果交java代码,这里的类名就要命名为Main,区分大小写
 

下面就开始写我们的代码了

先从最简单的来说:

1.输出hello world

package BigInteger;
import java.util.*;//导包,相当于c/c++里的头文件
public class Main {
	public static void main(String args[]) {
		
		Scanner cin = new Scanner(System.in);
		
		int a,b;
		a = cin.nextInt();
		b=cin.nextInt();
		int ans = a + b;
		System.out.println(ans);
	}
}

2.计算a+b

package BigInteger;
import java.util.*;//导包,相当于c/c++里的头文件
public class Main {
	public static void main(String args[]) {
		
		Scanner cin = new Scanner(System.in);
		
		int a,b;
		a = cin.nextInt();
		b=cin.nextInt();
		int ans = a + b;
		System.out.println(ans);
	}
}

 

3 .多组输入a+b

package BigInteger;
import java.util.*;
public class Main {
	public static void main(String args[]) {
		
		Scanner cin = new Scanner(System.in);
		
		int a,b;
		while(cin.hasNext()) {
			a=cin.nextInt();
			b=cin.nextInt();
			int ans=a+b;
			System.out.println(ans);
		}
	}
}

 

然后是关于大数的处理:

首先我们需要导包,即BigIntegr类 和 BigDecimal类所在的包

import java,math.*;

*就代表导入包math里面所有的类,如果你不喜欢看到 *

那么你也可以写 import java,math.BigInteger; import java,math.BigDecimal; (相当于c/c++里的头文件)

 

大整数的简单运算:


import java.util.*;
import java.math.*;
public class Main {
	public static void main(String args[]) {
		Scanner cin = new Scanner(System.in);
		BigInteger a , b, ans = null;
		String c;
		while(cin.hasNext()) {
			a=cin.nextBigInteger();
			c=cin.next();
			b=cin.nextBigInteger();
			if(c.compareTo("+")==0)
				ans=a.add(b);
			if(c.compareTo("-")==0)
				ans=a.subtract(b);
			if(c.compareTo("*")==0)
				ans=a.multiply(b);
			if(c.compareTo("/")==0)
				ans=a.divide(b);
			if(c.compareTo("%")==0)
				ans=a.mod(b);
			System.out.println(ans);
			
		}
	}

}

 

结果如下

 

关于BigDecimal的用法大致上和BigInteger一样。

不过这里需要提一下,在进行大浮点数运算的时候,小数点后面可能会含有多余的后导0

比如0.5000,在题目要求中可能只需要输出0.5

当然,有的题目可能还会要求小数点前面的0也要去掉,输入.5

这时候我们就需要去除掉后导0

方法如下:

String str;
str=ans.stripTrailingZeros().toPlainString();//去除后导0
//ans为大浮点数运算后得到的答案
//如果小数点前面的0也需要去掉,那么输出的时候处理一下即可:
if(str.charAt(0)=='0')
        System.out.println(str.substring(1));
else
        System.out.println(str);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值