Wikisida, DD1380 HT21/VT22Javaprogrammering för Pythonprogrammerare: Tips för inläsning av text

Wikisida
2021-06-16T09:52:29+02:00

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