Exercises in this lecture   Go to the notes, in which this exercise belongs -- Keyboard shortcut: 'u'   Alphabetic index   Course home      

Exercise 3.4
Indlæsning af heltal


Som det fremgår af lærebogen er indlæsning af tal et noget mere kompliceret problem end blot indlæsning af en tekstlinie. For at indlæse et heltal skal man udtrække cifrene af den indtastede tekststreng (en form for parsning) og beregne tallet. Hvis man synes, at dette er for omstændeligt, kan man bruge et alternativt bibliotek, som indholder en mere direkte 'readInt' metode, f.eks. via klassen Console i kataloget /pack/local-java/lib/corejava/ eller klassen Keyboard fra Lewis og Loftus (2ed).

I denne opgave vil vi, for øvelsens skyld, selv programmere en procedure, som indlæser et heltal fra tastaturet. Dette giver en nyttig indsigt i forskellen mellem at læse tekst og tal. Opgaven går altså ud på at indlæse en række tegn, som danner et heltal, og dernæst konvertere de indlæste tegn til et tal af typen int. Man kan sige, at øvelsen går ud på at programmere operationen parseInt - som Java anvender for at løse opgaven.

Udfyld derfor detaljerne i følgende programskabelon:

/* Læs et tal fra en linie af tegn, og returner det pågældende tegn som en int */

import java.io.*; // for at kunne anvende BufferedReader mv.

class talLaesning {

  //et objekt, kaldet stdin, som tillader os at læse en tekst linie:
  static BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));

  public static int readInt() throws IOException{
  /* Read an integer from the keyboard, and return it as the result of this function */

     String textLine;
     int tal = 0;
     textLine = stdin.readLine();
  
     // Læs her et tegn fra strengen textLine og konverter tegnet til et tal.
     // Udregn løbende tallet, som hidtil er indlæst, og opbevar det i variablen tal.
     // Det i'te tegn i strengen s læses med s.charAt(i).
     // Iøvrigt er de statiske metoder isDigit og digit i klassen Character
     // sikkert nyttige.

     return tal;
  }

  // hovedprogrammet, som kalder readInt:
  public static void main (String[] ars) throws IOException{
     System.out.println("Indlaes et tal");
     int etTal = readInt();
     System.out.println("Tallet var: " +  etTal);
  }

}
  
Der henvises til klassen Character for funktioner, som aflæser og returnerer egenskaber af et tegn i typen char.

Program skabelonen kan downloades til en fil via følgende link: Skabelon


Solution