Мне вот захотелось реализовать шаблон, что бы можно было иметь один шаблон для задач с разным вводом и выводом.
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
interface TypeIO {
void solve() throws IOException;
}
class FileIO implements TypeIO {
@Override
public void solve() throws IOException {
Scanner sc = new Scanner(new File("input.txt"));
PrintWriter pw = new PrintWriter(new File("output.txt"));
// Пишем свое решение используя файловый ввод вывод
sc.close();
pw.close();
}
}
class ConsoleIOFast implements TypeIO {
BufferedReader in;
StringTokenizer tok;
PrintWriter out;
String readToken() throws IOException {
while (tok == null || !tok.hasMoreTokens()) {
tok = new StringTokenizer(in.readLine());
}
return tok.nextToken();
}
int readInt() throws IOException {
return Integer.parseInt(readToken());
}
String readString() throws IOException {
return readToken();
}
@Override
public void solve() throws IOException {
in = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(System.out);
// Пишем свое решение используя быстрый ввод на Java
out.close();
in.close();
}
}
class ConsoleIO implements TypeIO {
@Override
public void solve() throws IOException {
Scanner sc = new Scanner(System.in);
// Пишем свое решение используя Scanner
sc.close();
}
}
class Solve {
private TypeIO typeIO;
public Solve(TypeIO typeIO) {
this.typeIO = typeIO;
}
void getSolve() throws IOException {
typeIO.solve();
}
}
public class Main {
public static void main(String[] args) throws IOException {
Solve solve = new Solve(new ConsoleIO()); // стандартный ввод вывод
// Solve solve = new Solve(new ConsoleIOFast()); // быстрый ввод вывод
// Solve solve = new Solve(new FileIO()); // файловый ввод вывод
solve.getSolve();
}
}