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);
}
}