Template oder wie geht's los

Je nach Aufgabe muss man sich für das Template STDIN / STDOUT oder File In/Out entscheiden. Die eigentliche Aufgabe löst man in der Methode doit(), wobei man natürlich weitere Methoden, innere Klassen, etc. schreiben kann, die man von doit() aus benutzen wird. Allgemein gibt es immer folgende Methoden des Templates:
in() liest eine Zeile als String ein
out() gibt einen String entsprechend des Templates aus.
zu beachten bei in():
int i = Integer.parseInt(in()); 
falls man eine Dezimalzahl einlesen möchte.
zu beachten bei out():
int i = 5; 
out(""+i);
Falls Ihr Zahlen ausgeben wollt muss das ein String werden im einfachsten Fall schreibt Ihr das also wie oben im Beispiel hin.

von STDIN lesen

man liest von STDIN und gibt aus auf STDOUT

import java.io.*;

public class ACMstdinout{
        public static void main(String[] args) throws Exception{
                new ACMstdinout(String[] args) throws Exception{
                        // öffnet das StreamHandle "in", liest also aus STDIN
                        in = new BufferedReader(new InputStreamReader(System.in));
                        // out = STDOUT
                        out = System.out;
                        // beginnt nun bei Eurem Startpunkt der Methode doit()
                        doIt();
                        // schliesst STDOUT
                        out.close();
                        // schliesst STDIN
                        in.close();
                }
                BufferedReader in;
                PrintStream out;
                // erweiterte Ausgabe fürs programmieren, bei der Abgabe immer auf FALSE setzen!
                boolean debug = true;
                void d(String s){
                        if(debug)
                        System.err.println(s);
                }
                // Methode für zeilenweises einlesen 
                String in(){
                        String s = null;
                        try{
                                s = in.readLine();
                        } catch(Exception e){
                        }
                        d("Read:"+s);
                        return s;
                }
                // Methode für zeilenweises ausgeben
                void out(String s){
                        try{
                                out.println(s);
                                d("Wrote:" +s);
                        }catch(Exception e){
                        }
                }
                // hier solltet Ihr beginnen mit Eurem Code
                public void doIt(){
                        // normalerweise liest man zu aller erst eine Integerzahl ein,
                        // wie oft etwas getan werden soll….
                        // nach Bedarf alles ändern ;)
                        int noOfCases = Integer.parseInt(in());
                        // Standardschleife zeilenweises einlesen und Problem lösen….
                        for(int curCase = 0; curCase < noOfCases; curCase++){
                                String currentLine = in();
                                // solve the problem here
                                out("Scenario #"+(curCase + 1)+ ":");
                                // output the problem here
                        }
                }
        }
}

DATA I/O

Aus einer Datei lesen etwas mit den Daten machen und wieder in eine Datei schreiben

import java.io.*;

public class ACMio{
        public static void main(String[] args) throws Exception{
                new ACMio(args);
        }
        public ACMio(String[] args)throws Exception{
                        // öffnet das FileHandle zum lesen
                        in = new BufferedReader(new FileReader(getClass().getName()+ ".in"));
                        // öffnet das FileHandle zu schreiben
                        out = new PrintStream(new                    FileOutputStream(getClass().getName()+".out"));
                        doIt();
                        // schliesst das FileHandle 
                        out.close();
                        in.close();
                }

                // Abkürzungen zum Lesen und Schreiben
                BufferedReader in;
                PrintStream out;

                // debug output zum programmieren
                boolean debug = false;
                void d(String s){
                        if(debug)
                                System.err.println(s);
                }
                // Methode, die Ihr zum Einlesen verwendet
                String in(){
                        String s = null;
                        try{
                                s = in.readLine();
                        } catch(Exception e){
                        }
                        d("Read:"+s);
                        return s;
                }
                // Methode, die Ihr für die Ausgabe verwendet
                void out(String s){
                        try{
                                out.println(s);
                                d("Wrote:" +s);
                        }catch(Exception e){
                        }
                }
                // hier löst Ihr das Problem
                public void doIt(){
                        // einlesen einer Zahl aus der Zeile
                        int result = Integer.parseInt(in());

                        // Ausgabe der gelesenen Zahl
                        out(""+result);
                }
        }

Comments