1. 基本输入输出:
(1)
JDK 1.5.0 新增的Scanner类为输入提供了良好的基础,简直就是为ACM-ICPC而设的。
一般用法为:
import java.io.*
import java.util.*
public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(new BufferedInputStream(System.in)); ...
}
}
当然也可以直接Scanner cin = new Scanner(System.in);
只是加Buffer可能会快一些
(2)
读一个整数: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() 等,具体见TOJ 1001 例程。
(3)
输出一般可以直接用System.out.print() 和System.out.println(),前者不输出换行,而后者输出。
比如:System.out.println(n); // n 为int 型
同一行输出多个整数可以用
System.out.println(new Integer(n).toString() + " " + new Integer(m).toString());
也可重新定义:
static PrintWriter cout = new PrintWriter(new BufferedOutputStream(System.out));
cout.println(n);
(4)
对于输出浮点数保留几位小数的问题,可以使用DecimalFormat类,
import java.text.*;
DecimalFormat f = new DecimalFormat("#.00#");
DecimalFormat g = new DecimalFormat("0.000");
double a = 123.45678, b = 0.12;
System.out.println(f.format(a));
System.out.println(f.format(b));
System.out.println(g.format(b));
这里0指一位数字,#指除0以外的数字。