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

    Scanner non stampa messaggio d'invito a digitare

    Salve,
    sto scrivendo una classe Java che esegue una serie di test classici (uguaglianza tra String con equals(), operatori logici && e ||, operatori ternari...).
    Funziona tutto, tranne che per lo switch dove vorrei poter immettere, tramite la classe Scanner, il giorno della settimana e da lì gestire un messaggio. Funziona anche lo switch ma non compare il messaggio previsto.
    Questo è il codice relativo:
    codice:
    import java.util.Scanner;
    import java.io.IOException;
    
    
    public class TestVari {
    
    
    	public static void main(String[] args) throws IOException {
    		String giorno = leggiGiorno("Immetti il giorno della settimana odierna, senza accento");
    		switch(giorno.toLowerCase()) {
    			case "mercoledi":
    				System.out.println("Oggi e' " + giorno + ": Palestra");
    				break;
    			case "venerdi":
    				System.out.println("Oggi e' " + giorno + ": Lezione");
    				break;
    			case "sabato":
    			case "domenica":
    				System.out.println("Oggi e' " + giorno + ": Week end");
    				break;
    			default:
    				System.out.println("Oggi e' " + giorno + ": Studiare da casa");
    				break;
    		}
    	}
    	
    	public static String leggiGiorno(String msg) {
    		String day = "";
    		Scanner input = new Scanner(System.in);
    		day = input.next();
    		return day;
    	}
    }
    Sto volutamente trascurando la gestione di eccezioni causate dall'immissione di String non previste dallo switch proprio per capire perché non stampa il messaggio passato come argomento di leggiGiorno().

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    E dove gli avresti detto di stamparlo? Tu stai passando la stringa al metodo che, semplicemente, non se ne fa nulla...


    codice:
        public static String leggiGiorno(String msg) {
            String day = "";
            Scanner input = new Scanner(System.in);
            day = input.next();
            return day;
        }

    La prima riga imposta "day" alla stringa vuota.
    La seconda riga crea l'oggetto Scanner
    La terza riga legge l'input da tastiera
    La quarta riga restituisce il valore letto al chiamante


    Ciao.
    Ultima modifica di LeleFT; 08-09-2017 a 11:57
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    E dove gli avresti detto di stamparlo?

    Siccome ho rimosso il try/catch (da un altro codice fatto in precedenza), mi ero portato appresso il print!
    Ma si può...

    Grazie!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.