Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [java]input da tastiera

    ciao,
    in una applicazione consolle vorrei recuperare il valore digitato dall'utente da tastiera, ma non ci riesco.. ho provato;

    System.in.read() ma mi restituisce l'equivalente ascii corrispondenti al primo carattere digitato (o almeno così mi pare di aver capito..) come posso fare?
    xxx

  2. #2
    Ho trovato questo:

    codice:
    	class Input 
    	{
    	   public static void main (String argv[]) {
    	      int inp = 0;
    	      do {
    	         inp = leggi(true);
    	         System.out.print ("hai inserito ");
    	         System.out.println (inp);
    	      } while (inp != 0);
    	      do {
    	         inp = leggi(false);
    	         System.out.print ("hai inserito ");
    	         System.out.println ((char)inp);
    	      } while (inp != 0);
    	   }
    	 
    	   static int leggi(boolean num) {
    	      byte b[] = new byte[9];
    	      int Return = 0;
    	      try {
    	         System.in.read(b);
    	      } catch (Exception e) { }
    	      if (num)
    	         for (int i = 0; i < b.length; i++)
    	            if (b[i] >= '0' && b[i] <= '9')
    	               Return = Return * 10 + b[i] - '0';
    	            else
    	               break;
    	      else
    	         if (b[0] >= ' ')
    	            Return = b[0];
    	      return Return;
    	   }
    	}
    In questa classe abbiamo definito il metodo leggiIntero che legge una riga dal terminale e restituisce o il numero intero digitato, se il parametro num vale true, o il primo carattere digitato, se il parametro vale false. Per la lettura viene utilizzato il metodo fornito con il linguaggio System.in.read(b) che riempie l’array di byte passato come argomento con i caratteri digitati dall’operatore. Il costrutto try-catch è stato inserito perché altrimenti il codice non viene compilato ma verrà illustrato in seguito. A questo punto, se il parametro num vale true si esegue un ciclo sugli elementi dell’array b fintanto che sono compresi tra 0 e 9. Ogni volta che si trova un valore accettabile, si eseguono le seguenti operazioni:

    ° si moltiplica per 10 il valore della variabile Return per tenere conto della posizione: alla prima iterazione Return vale 0 per cui tale prodotto restituisce 0.
    ° si sottrae dal codice del carattere letto il codice del carattere ‘0’ (48) per ottenere un intero compreso tra 0 e 9 corrispondente al numero digitato.
    ° si sommano questi due valori e si memorizza il risultato nella stessa variabile Return.

    Non appena si trova il primo carattere che non corrisponde a una cifra, si esce dal ciclo e si restituisce il valore della variabile Return.
    Se il parametro num vale false viene verificato se il primo carattere digitato ha un codice uguale o superiore a spazio, poiché i codici inferiori tipicamente corrispondono a caratteri di controllo non visualizzabili. Se tale carattere è visualizzabile, esso viene restituito, altrimenti viene restituito 0.
    Il codice contenuto nel metodo main visualizza tutti i numeri inseriti fino a che il metodo leggiIntero non restituisce 0, dopodiché visualizza tutti i primi caratteri delle stringhe inserite finché non si inserisce una riga nulla o un carattere non visualizzabile. Nella seconda println è stato utilizzato un cast per ottenere la visualizzazione del carattere e non del suo codice.

    Spero di esserti stato di aiuto.

    Ciao

  3. #3
    grazie mille, non pensavo fosse una cosa così lunga, l'avevo fatta un po' troppo semplice.

    xxx

  4. #4
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Se devi interpretare il valore di un numero intero:



    codice:
    import java.io.*;
    ...
    ...
    ...
    int num = 0;
    BufferedReader d = new BufferedReader(new InputStreamReader(System.in));
    String s = null;
    try{
    	s = d.readLine();
    	num = Integer.parseInt(s);
    }
    catch(IOException e){
    	System.out.println(e);
    }
    catch(NumberFormatException nfe){
    	System.out.println("Non hai inserito un numero intero");
    }

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.