Java的输入输出主要是使用Scanner 类来实现的,这包括从键盘读取输入,从文件读取输入,向屏幕输出和写入文件。另外,为了提高速度,我们还会使用带缓冲区的读和写。
I. java.util.Scanner
1. 读取键盘输入:
首先必须引入这个包:import java.util.Scanner
然后使用 Scanner sc = new Scanner(System.in) 生成Scanner对象。System.in 在这里代指标准输入流,默认定义为键盘输入。也可以传入一个字符串,作为需要Scanner处理的对象。
import java.io.IOException;
import java.util.Scanner;
public class ScannerExample{
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in); // 声称Scanner对象
System.out.println("Enter username");
String userName = sc.nextLine(); // 读取整行作为输入,以回车键作为结束符
System.out.println("Username is: " + userName); // 输出读取的输入
}
}
在OJ中,常指定主类为public Main 形式,如PTA, 牛客网等:你需要把上面的"public class ScannerExample" 换为 "public class Main"。另外, OJ还有固定的几种输入,比如
a > 多行输入,每行是一个数字(整数或者浮点数):
Input 输入数据有多组,每组占一行,由一个整数组成。
Sample Input
56
67
100
123
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) { //判断是否结束
int score = sc.nextInt();
System.out.println(score);
}
}
}
b> 多行输入,每行是不定数个给定类型的数字
示例: https://ac.nowcoder.com/acm/contest/320/G
输入数据有多组, 每行表示一组输入数据。每行不定有n个整数,空格隔开。(1 <= n <= 100)。
1 2 3
4 5
0 0 0 0 0
因为每行数字个数是不定的,所以只能使用while循环。我们可以先用Scanner读取输入的一行,然后再用另一个Scanner 把每一行分解到每行数字。
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
int sum;
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()){
sum = 0;
String Line =