Arsenal911's blog

By Arsenal911, 11 years ago, In Russian

Мне вот захотелось реализовать шаблон, что бы можно было иметь один шаблон для задач с разным вводом и выводом.


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(); } }
  • Vote: I like it
  • +6
  • Vote: I do not like it