之前整理過有關Java的基本知識,也寫了幾個有關java的題目,不過發現不夠完善,如今從新整合一下。java
java的輸入是先定義一個scanner,而後用這個進行輸入,而且每一種輸入都有相應的輸入函數,具體以下:ide
public class Main { public static void main(String[] args) { Scanner cin = new Scanner ( System.in); int a; double b; BigInteger c; String st; a = cin.nextInt(); b = cin.nextDouble(); c = cin.nextBigInteger(); d = cin.nextLine(); // 每種類型都有相應的輸入函數. } }
Java的輸出相較於輸入來講就簡單一些了。函數
System.out.println(a + " " + b); System.out.printf("%d %10.5f\n", a, b); /*規格化的輸出: 函數:這裏0指一位數字,#指除0之外的數字(若是是0,則不顯示),四捨五入.*/ DecimalFormat fd = new DecimalFormat("#.00#"); DecimalFormat gd = new DecimalFormat("0.000"); System.out.println("x =" + fd.format(x)); System.out.println("x =" + gd.format(x));
java支持大數的操做,其中也是由具體函數實現的。看下面的例子:ui
int a = 123, b = 456; BigInteger x, y, z, ans; x = BigInteger.valueOf(a);//轉換 y = BigInteger.valueOf(b); ans = x.add(y); ans = x.divide(y); ans = x.mod(y); if (ans.compareTo(x) == 0)//比較 System.out.println("相等");
這裏就寫出了int型轉換成大數型以及加減乘除比較的基本操做。其中函數原型以下:spa
BigInteger add(BigInteger other) BigInteger subtract(BigInteger other) BigInteger multiply(BigInteger other) BigInteger divide(BigInteger other) BigInteger mod(BigInteger other) int compareTo(BigInteger other) static BigInteger valueOf(long x)
這是大整數的操做,其中還有一個數據類型爲:BigDecimal,表示小數,操做與以上相同。code
之前作題遇到過這樣的狀況,如何去掉末尾的0,有一個具體的函數,stripTrailingZeros()函數就是用於去除末尾多餘的0的,可是此時程序的輸出爲科學記數法例如: 1E+2。解決的方法很簡單,若是想要避免輸出科學計數法的字符串,咱們要用toPlainString()函數代替toString()。如:System.out.println( new BigDecimal("100.000").stripTrailingZeros().toPlainString());此時程序的輸出就爲 100。具體實現:orm
Scanner in=new Scanner (System.in); BigDecimal a,b; while(in.hasNext()) { a=in.nextBigDecimal(); b=in.nextBigDecimal(); System.out.println(a.add(b).stripTrailingZeros().toPlainString()); }
HDU - 1042:計算階乘:blog
import java.io.*; import java.math.BigInteger; import java.util.*; public class Main//注意在oj提交是要用Main { public static void main(String[] args) { Scanner in=new Scanner (System.in); int n; while(in.hasNext()) { n=in.nextInt(); BigInteger sum=BigInteger.valueOf(1); for(int i=1;i<=n;i++) sum=sum.multiply(BigInteger.valueOf(i)); System.out.println(sum); } } }
POJ1001 計算a^b 注意是小數ip
import java.io.*; import java.math.BigDecimal; import java.math.BigInteger; import java.util.*; public class Main//注意在oj提交是要用Main { public static void main(String[] args) { Scanner in=new Scanner (System.in); int n; BigDecimal a,b; while(in.hasNext()) { b=BigDecimal.valueOf(1); a=in.nextBigDecimal(); n=in.nextInt(); for(int i=0;i<n;i++) { b=b.multiply(a); } String s = b.stripTrailingZeros().toPlainString(); if(s.startsWith("0")) s=s.substring(1); System.out.println(s); } } }
HDU - 1753 計算A+B 保留最簡形式ci
import java.io.*; import java.math.BigDecimal; import java.math.BigInteger; import java.util.*; public class Main//注意在oj提交是要用Main { public static void main(String[] args) { Scanner in=new Scanner (System.in); BigDecimal a,b; while(in.hasNext()) { a=in.nextBigDecimal(); b=in.nextBigDecimal(); System.out.println(a.add(b).stripTrailingZeros().toPlainString()); } } }
import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); BigInteger []k = new BigInteger[1100]; k[0] = BigInteger.valueOf(1); for(int j=1;j<310;j++) { k[j]=k[j-1].multiply(BigInteger.valueOf(4*j-2)).divide(BigInteger.valueOf(j+1)); } while (true) { int times=input.nextInt(); BigInteger sum=BigInteger.valueOf(1); if(times!=0) { for(int i=1;i<=times;i++) sum=sum.multiply(BigInteger.valueOf(i)); System.out.println(sum.multiply(k[times])); } else { break; } } } }