头文件
import Java.io.*;
import java.util.*;→import java.util.Scanner;
import java.math.*;→import java.math.BigInteger;
输入
Scanner cin = Scanner (System.in);
while(cin.hasNext())//等价于!=EOF,hasNext只返回true或者false来控制
n=cin.nextInt();//读入一个int型的数
b=input.nextDouble(); //读入一个double的数
String c=input.next();//识别空格和回车
String str=input.nextLine();//会读入空格和回车
n=cin.nextBigInteger();//读入一个大整数
N=cin.nextBigDecimal();//读入高精度浮点数
输出
System.out.printf("%d\n",n);//也可以类似c里的输出方式
BigInteger
初始化:BigInteger bigInteger = new BigInteger("1");//直接创建大整数并赋值
BigInteger中的0,1,10
A=BigInteger.ONE
B=BigInteger.TEN
C=BigInteger.ZERO
int和BigInteger的转换
int b = a.intValue(); //将大整数a转为int型b
intValue,longValue,floatValue,doubleValue://把该数转换为该类型的数的值。
将int型的数赋值给BigInteger:BigInteger.valueOf(k);//将int k转化为BigInteger
基本的函数:
add:+ a.add(b);
subtract:-
multiply:*
divide:/
pow:a.pow(b)=a^b,b是int型
mod:a.mod(b)=a%b; a,b都是BigInteger
and:等同于c++的位&;
or:等同于c++的位|
xor: 异或,BigInteger xor(BigInteger val)
not:!,非;
shiftLeft:左移,this << n ,this*2^n;
shiftRight:右移,this >> n
gcd,abs:公约数,绝对值 a.abs(); a.gcd(b)
compareTo:根据该数值是小于、等于、或大于 val返回-1、0或1;
equals:判断两数是否相等,也可以用compareTo来代替
min,max:取两个数的较小、大者;
进制转换
String str="FF";
实现x进制转换十进制(这里x为2,x可以为8,16):
BigInteger a=input.nextBigInteger();//输入一个2进制数
BigInteger b=new BigInteger(a.toString(),2);//利用2进制法则转化为10进制存入b
System.out.println(b.toString(2));//将b(必须为10进制)转化为2进制存入字符串
BigDecimal
stripTrailingZeros() ,返回类型为BigDecimal除去与数值无关的多余0的数值。
BigDecimal类有3个toString方法,分别是toEngineeringString、toPlainString和toString,从BigDecimal的注释中可以看到这3个方法的区别:
toEngineeringString:有必要时使用工程计数法。工程记数法是一种工程计算中经常使用的记录数字的方法,与科学技术法类似,但要求10的幂必须是3的倍数。
toPlainString:不使用任何指数
toString:有必要时使用科学计数法
不使用指数 科学记数法工程记数法
2700 2.7 × 10³ 2.7 × 10³
27000 2.7 × 10⁴ 27 × 10³
270000 2.7 × 10⁵ 270 × 10³
2700000 2.7 × 10⁶ 2.7 × 10⁶
BigDecimal d=new BigDecimal("001.23300");
System.out.println(d.stripTrailingZeros().toPlainString());
//输出1.233
String
str.charAt(i)//str字符串的第i个
startsWith():确定此实例的开头是否与指定的字符串匹配。
String s="asdf";
if(s.startsWith("as"))
System.out.println(1);
//输出1
substring(),返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。
String s="asdf";
System.out.println(s.substring(1));
//输出sdf
数组操作
import java.util.Scanner;
import java.math.BigInteger;
public class Main {
static BigInteger h[]=new BigInteger[110]; //数组定义
public static void main(String args []){
h[0]=new BigInteger("1");
for(int i=1;i<=100;i++){
h[i]=(h[i-1].multiply(BigInteger.valueOf(4*i-2))).divide(BigInteger.valueOf(i+1));
}
Scanner input=new Scanner(System.in);
while(input.hasNext()){
int a=input.nextInt();
if(a==0){
return ;
}
System.out.println(h[a]);
}
}
}