文章出處 http://java.chinaitlab.com/base/953012_2.html
1、基本框架
import java.oi.*;
import java.util.*
public class Main
{
public static void main(String args[])
{
Scanner cin = newScanner(System.in));
}
}
2、Java的輸入
讀一個整數:int n = cin.nextInt();
相當於scanf("%d",&n);或 cin 》 n;
讀一個字符串:String s = cin.next();
相當於scanf("%s",s);或 cin 》 s;
讀一個浮點數:double t =cin.nextDouble();
相當於scanf("%lf",&t); 或 cin 》 t;
讀一整行:String s = cin.nextLine();
相當於gets(s);或 cin.getline(…);
判斷是否有下一個輸入可以用 cin.hasNext() 或 cin.hasNextInt() 或cin.hasNextDouble()
3、Java的輸出
輸出一般可以直接用 System.out.print() 和 System.out.println(),前者不輸出換行,而後者輸出。
System.out.printf()的使用方法類似於C語言的printf();
4、浮點數輸出
import java.text.*;
public class Main
{
public static void main(String[] args)
{
DecimalFormat g = newDecimalFormat("0.00");
double a = 123.45678;
System.out.println(g.format(a));
}
}
//輸出爲123.46
5、Java的高精度
import java.math.* // 需要引入 java.math 包
BigInteger a =BigInteger.valueOf(100);
BigInteger b =BigInteger.valueOf(50);
BigInteger c = a.add(b) // c = a + b;
//主要有以下方法可以使用:
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 BigIntegervalueOf(long x)
切記:
BigInteger類不可進行+-這樣的運算,要調用其成員函數進行運算。
另外BigInteger類不是int 的擴展類型,所以不能把int類型值直接賦值給BigInteger.
BigInteger類型有自己的常量:
BigInteger.zero
BigInteger.one
6、Java的字符串
String 類用來存儲字符串,可以用charAt方法來取出其中某一字節,計數從0開始:
String a ="Hello"; // a.charAt(1) = 'e'
用substring方法可得到子串,如上例
System.out.println(a.substring(0, 4)) // output "Hell"
注意第2個參數位置上的字符不包括進來。這樣做使得s.substring(a, b) 總是有 b-a個字符。
字符串連接可以直接用 + 號,如
String a ="Hello";
String b ="world";
System.out.println(a + ", " + b + "!"); // output "Hello, world!"
不可以通過charAt方法改變某一單個字符
7、Java的數組
數組的定義:
int[] a = new int[100];
數組的初始化
Arrays.fill(a,0);
相當於C語言中的memset(a,0,sizeof(a));
8、一些注意事項
使用Netbeans寫Java程序的時候用自動添加package main;交題的時候要去掉這句話。
主類必須命名爲 Main
雖然Java功能很強大,但不能完全依賴他,畢竟C/C++還是ACM/ICPC的主流語言。有些題目無論Java怎麼寫都會超時,可以用Java計算出結果然後用C/C++打表提交。
交題時,你的代碼應該是如下框架
import ……//相當於c++的include
public class Main {
public static……//一些自己定義的函數
public static void main(String[] args) {
Scanner cin = newScanner(System.in);
}
}
Java的語法與c/c++還是很相似的,所以放心寫吧
/*
Java輸入加速
用BufferedReader和StringTokenizer代替Scanner
*/
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
Reader Reader =newReader(System.in);
double x =Reader.nextDouble();
int n = Reader.nextInt();
String str = Reader.next();
}
}
class Reader {
final BufferedReaderreader;
StringTokenizertokenizer;
public Reader(InputStream input) {
reader = newBufferedReader(new InputStreamReader(input));
tokenizer = newStringTokenizer("");
}
public String next() throws IOException {
while (!tokenizer.hasMoreTokens())
tokenizer = newStringTokenizer(reader.readLine());
returntokenizer.nextToken();
}
public int nextInt() throws IOException {
return Integer.parseInt(next());
}
public double nextDouble() throws IOException {
returnDouble.parseDouble(next());
}
}