Tips för inläsning av text

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).