[java] lussen
Geplaatst: wo 20 feb 2008, 19:40
Ik een probleem om de oplossing van de volgende opgave te begrijpen:
Lees een getal karaktergewijs. Met de methode readChar() dient karakter per karakter gelezen te worden in een herhalingslus. Bouw uitgaande van de karaktertekens de gehele waarde op. Schrijf deze waarde tenslotte als integer op het scherm.
Voorbeeld: de karaktertekens '1''2''3' worden afzonderlijk ingelezen en het gehele getal 123 wordt daaruit gevormd en getoond op het scherm.
Oplossing:
Mijn probleem:
1. Ik denk dat je 'int getal' moet ingeven zodat je de karakters kan gaan omzetten naar een geheel getal.
2. Ik snap niet direct waarom men dat gelijk gaat stellen aan 0 ? (het eerste cijfer ('0') heeft ASCII waarde 48 waarom dan niet meteen vertrekken van 48 ?).
Tenslotte snap ik deze regel niet:
Kan er mij iemand wat helpen bij mijn bovenstaande vragen ?
Lees een getal karaktergewijs. Met de methode readChar() dient karakter per karakter gelezen te worden in een herhalingslus. Bouw uitgaande van de karaktertekens de gehele waarde op. Schrijf deze waarde tenslotte als integer op het scherm.
Voorbeeld: de karaktertekens '1''2''3' worden afzonderlijk ingelezen en het gehele getal 123 wordt daaruit gevormd en getoond op het scherm.
Oplossing:
Code: Selecteer alles
public class Oef3_4
{
public static void main (String [] args)
{
Input inp = new Input();
System.out.print("Invoer: ");
char ch; int getal=0;
/*
*ch = inp.readchar();
*while(ch != '\n')
*{
getal= getal*10+ (int) ch - 48;
ch=inp.readChar();
}
*/
while((ch=inp.readChar()) != '\n')
getal = getal*10 + (int) ch -48;
System.out.println("Getal: "+getal);
}
}
1. Ik denk dat je 'int getal' moet ingeven zodat je de karakters kan gaan omzetten naar een geheel getal.
2. Ik snap niet direct waarom men dat gelijk gaat stellen aan 0 ? (het eerste cijfer ('0') heeft ASCII waarde 48 waarom dan niet meteen vertrekken van 48 ?).
Tenslotte snap ik deze regel niet:
Code: Selecteer alles
getal = getal*10 + (int) ch -48;