Lettura char in java

di il
5 risposte

Lettura char in java

Ciao a tutti, vengo dal linguaggio C e mi sfugge come far leggere una variabile di tipo char in Java... Vi faccio un esempio stupidissimo:
import java.util.Scanner;

public class EsempioVeroFalso {

	public static void main(String[] args) {
		
	    Scanner keyboard = new Scanner(System.in);
	    
	    char risposta;
	    
	    System.out.print("2 + 2 fa' 4? (V/F): ");
	    risposta = keyboard.nextLine();
	    
	    if ((riposta = 'v') || (risposta = 'V')) {
	        System.out.print("Risposta esatta.");
	    }
	    
	    else if ((risposta = 'f') || (risposta = 'F')) {
	        System.out.print("Risposta sbagliata.");
	    }
	    
	    else {
	        System.out.print("Risposta non valida.");
	    }
		
	}

}
Io scriverei questo codice cosi', ma non funziona. Qualcuno di voi mi saprebbe spiegare il metodo generale? Grazie mille.

5 Risposte

  • Re: Lettura char in java

    Mario Rossi ha scritto:


    Ciao a tutti, vengo dal linguaggio C e mi sfugge come far leggere una variabile di tipo char in Java... Vi faccio un esempio stupidissimo:
    	    char risposta;
    	    
    	    risposta = keyboard.nextLine();
    nextLine() restituisce uno String. Che NON è assegnabile ad un char.

    Il punto è che Scanner NON dà la possibilità di leggere un singolo carattere. Devi leggere una stringa come linea intera o token e poi prendere il primo carattere (eventualmente testando che la stringa abbia lunghezza 1, se vuoi farlo "robusto").
  • Re: Lettura char in java

    andbin ha scritto:


    Mario Rossi ha scritto:


    Ciao a tutti, vengo dal linguaggio C e mi sfugge come far leggere una variabile di tipo char in Java... Vi faccio un esempio stupidissimo:
    	    char risposta;
    	    
    	    risposta = keyboard.nextLine();
    nextLine() restituisce uno String. Che NON è assegnabile ad un char.

    Il punto è che Scanner NON dà la possibilità di leggere un singolo carattere. Devi leggere una stringa come linea intera o token e poi prendere il primo carattere (eventualmente testando che la stringa abbia lunghezza 1, se vuoi farlo "robusto").
    Posso chiederti un'esempio pratico del metodo migliore/più utilizzato per fare questo genere di cose?
  • Re: Lettura char in java

    Mario Rossi ha scritto:


    Posso chiederti un'esempio pratico del metodo migliore/più utilizzato per fare questo genere di cose?
    - usi nextLine()
    - (opzionale) testi la lunghezza della stringa, se esattamente 1 o almeno 1 (a tua scelta, il primo caso è il più "stretto"). Se non è così puoi far fallire l'intera esecuzione o chiedere un nuovo input.
    - usi charAt(0) di String per ottenere il primo(/unico) char.
  • Re: Lettura char in java

    andbin ha scritto:


    Mario Rossi ha scritto:


    Posso chiederti un'esempio pratico del metodo migliore/più utilizzato per fare questo genere di cose?
    - usi nextLine()
    - (opzionale) testi la lunghezza della stringa, se esattamente 1 o almeno 1 (a tua scelta, il primo caso è il più "stretto"). Se non è così puoi far fallire l'intera esecuzione o chiedere un nuovo input.
    - usi charAt(0) di String per ottenere il primo(/unico) char.
    import java.util.Scanner;
    
    public class EsempioVeroFalso {
    
    	public static void main(String[] args) {
    		
    	    Scanner keyboard = new Scanner(System.in);
    	    
    	    String risposta;
    	    
    	    System.out.print("2 + 2 fa' 4. (V/F): ");
    	    risposta = keyboard.nextLine();
    	    
    	    if ((risposta.charAt(0) == 'v') || (risposta.charAt(0) == 'V')) {
    	        System.out.print("\nRisposta esatta.");
    	    }
    	    
    	    else if ((risposta.charAt(0) == 'f') || (risposta.charAt(0) == 'F')) {
    	        System.out.print("\nRisposta sbagliata.");
    	    }
    	    
    	    else {
    	        System.out.print("\nRisposta non valida.");
    	    }
    		
    	}
    
    }
    
    Ho modificato il codice cosi' e funziona. Grazie. E' scritto in maniera ottimale?
  • Re: Lettura char in java

    Mario Rossi ha scritto:


    Ho modificato il codice cosi' e funziona. Grazie. E' scritto in maniera ottimale?
    Potevi assegnare il carattere ad una variabile char invece di ripetere il risposta.charAt(0) . Ma per il resto, è corretto e sensato. Non hai testato la lunghezza ma vuol solo dire che l'utente deve essere consapevole di dover inserire almeno 1 carattere. Se dà una riga "vuota", il charAt(0) si schianta con eccezione. Se dà più caratteri, quelli in più vengono ignorati. Tutto qui.
Devi accedere o registrarti per scrivere nel forum
5 risposte