----- 11/9/03 ----- > la presente per chieder[e] un chiarimento sul funzionamento di drjava. > Quando cerco di immettere dei valori da tastiera tramite [...] > System.in.read, il programma non funziona correttamente, nel senso > che elabora i dati in maniera "tutta sua" e come risultato [fornisce] > valori completamente sbagliati. ad esempio un semplice programma come > questo: > > import java.io.*; > > class io { > public static void main(String[] args) throws IOException { > int altezza, base, area; > altezza = System.in.read(); > base = System.in.read(); > area = base*altezza/2; > System.out.println(area); > } > } > > [fornisce] risultati sbagliati in uscita, oltre ad attendere che sia > inserito solamente il primo dato (il secondo non so come immetterlo > in quanto una volta dato l'invio, il programma mi restituisce il > risultato...sbagliato!). > Che tragico errore commetto? da cosa puo' dipendere una cosa simile? Il problema non dipende dall'ambiente DrJava. Normalmente in Java l'input relativo alla console standard va "filtrato" (altrimenti viene letto byte dopo byte). Puoi procedere, per esempio, secondo il modello che segue in calce. ----- * ----- oo ==/\========== Power.java ============== /* Programma per il calcolo di potenze * base: naturale positivo, esponente: naturale * * Dopo aver compilato il programma, * * java Power b e * * calcola b elevato alla e; * * java Power * * calcola ripetutamente potenze relative ai dati introdotti * interattivamente dall'utente. */ import java.io.*; public class Power { public static int power( int b, int e ) { int x = b; int y = e; int z = 1; while (y > 0) { if (y % 2 == 0) { x = x * x; y = (int) y / 2; } else { z = z * x; y = y - 1; } } return z; } public static void main( String[] args ) { int base, exponent; if (args.length == 2) { // singola valutazione base = Integer.parseInt(args[0]); exponent = Integer.parseInt(args[1]); System.out.println( " power(" + base + "," + exponent + ") = " + power(base,exponent) ); } else { // interazione con l'utente BufferedReader input = new BufferedReader( new InputStreamReader(System.in) ); try { while (true) { System.out.print( " base = " ); base = Integer.parseInt( input.readLine() ); if (base <= 0) break; System.out.print( " exponent = " ); exponent = Integer.parseInt( input.readLine() ); System.out.println( " power(" + base + "," + exponent + ") = " + power(base,exponent) ); } } catch (IOException e) { } } } }