Hur man läser in alla tecken i indata (inklusive radbrytningar)
I uppgiften "Kommentarer" ombeds du läsa in alla tecken i indata, inklusive radbrytningar. Det finns flera sätt att göra detta på. Ett sätt är att lägga in alla tecken i en lång sträng, t.ex. så här:
Scanner scan = new Scanner( System.in );
StringBuffer buf = new StringBuffer();
while ( scan.hasNextLine() ) {
buf.append( scan.nextLine() );
buf.append( "\n" );
}
String s = buf.toString();
Eftersom scan.nextLine()
inte tar med radbrytningar får man lägga till dem separat, som i kodexemplet ovan.
Ett annat och effektivare sätt att att läsa tecken för tecken, så här:
int i;
try {
while ((i = System.in.read()) != -1) {
char c = (char)i;
// Din kod här
}
}
catch (IOException e) {
e.printStackTrace();
}
Man kan då skriva ut tecknet c
om man inte befinner sig i en kommentar, och låta bli att skriva ut c
om man befinner sig i en kommentar (svårigheten med uppgiften är ju just att avgöra huruvida c
befinner sig i en kommentar eller ej).