JAVA in ACM

文章出處 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());

  }

  }

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章