Chiarimento classi

di il
46 risposte

Chiarimento classi

In un file di classe posso creare un metodo con il costrutto case?
Se affermativo,posso inserire tra le clausole del case i messaggi di uscita?

46 Risposte

  • Re: Chiarimento classi

    Intendi dire un metodo con all'interno uno switch-case ? Questo è perfettamente lecito. Se poi con la seconda domandi intendi dire che ogni case possa avere un return con una stringa contenente un valore di ritorno, anche questo puoi benissimo farlo. Se intendi altro, chiarisci meglio.
  • Re: Chiarimento classi

    Ho pensato che forse riuscire a risolvere questo problema utilizzando un try catch....
  • Re: Chiarimento classi

    Se intendi altro, chiarisci meglio.
    Ad esempio: costrutto case all'interno della classe Scrivo in pseudocodice.
    switch (numero)
    case 1: se numero=1, imposta la velocità ad 1 ed emetti il seguente messaggio. Il dispotivoè acceso e pronto all'uso.
  • Re: Chiarimento classi

    Certo, puoi fare tutto, dipende da chi ha bisogno di quelle informazioni. Se ti basta una stringa come messaggio di ritorno, puoi fare il return con il messaggio, a patto che velocità sia una variabile di classe che possa quindi essere settata a 1.
    Se hai bisogno che la funzione restituisca tutti e due i valori, sarebbe meglio avere come valore di ritorno un oggetto che definisci tu in una classe a parte, che ha come campi velocità e messaggio.

    La questione però è anche un'altra: cosa è quel numero che vorresti inserire nello switch? Da chi lo ricevi? E' una specie di valore di ritorno codificato di un'altra funzione?
    Potrebbe non essere un bel modo di disegnare la classe, un codice scritto così come valore numerico può essere fonte di errori.

    Qual'è il contesto di riferimento, chi è che passa e riceve i valori?
  • Re: Chiarimento classi

    Potrei farlo anche con le lettere, non è questo il problema. Il fatto è che ho bisogno digestire due casi in cui i messagi sono diversi da quelli che sono scritti nel file del programma.E siccome è tutta la sera che tento di spostare il codice ovunque per fare uscire solo il messaggio che mi interessa, ho deciso di mettere questi due casi nel case del file della classe e buttare fuori due messaggi diversi.
    Ho cercato di risolvere il problema con il blocco try-catch ma non ottengo quello che voglio.
    System.out.print("\nInserisci il valore: ");
    	    lett = scanner.nextInt();
    	    try
    	    {  	
    	       if (lett==1)
    	       
    	        System.out.print("Il dispositivo è acceso e pronto all'uso.");
    	    }
    	    catch(Exception e){}
  • Re: Chiarimento classi

    In realtà lo stesso vale potrebbe valere per le lettere, ma non è il punto fondamentale.

    E' questo tutto il codice che hai? Non è cambiato praticamente nulla, se non che è chiaro che viene letto un valore da tastiera.
    Il try-catch ti servirebbe se volessi trasformare in numero la stringa inserita dall'utente, ma continui a essere molto vago ...

    E ovviamente immagino che tu sappia che l'if scritto così non è per niente corretto.
  • Re: Chiarimento classi

    No non è solo questo il codice che ho. Ho scritto quello per sapere se è possibile fare qualcosa el genere con il blocco try.
    Ho corretto l'if

    Immaginavo di essere vago. In pratica l'esercizio adesso l'ho risolto tutto mettendo nel case i due messaggi che non riuscivo a gestire.
    Non ho problemi a mettere i codici sul forum,ma non me la sentirei essendo un esercizio tratto da un libro di testo.
  • Re: Chiarimento classi

    Beh, non credo proprio che sia un problema postare esercizi da libro di testo, è stato fatto più volte.

    Usare il blocco try-catch in questo modo è possibile, ma per ora non serve a niente, finché non fai un parseInt su quella stringa lett (che per ora non ha senso confrontare con il numero 1) non c'è nulla che possa causare un'eccezione.
  • Re: Chiarimento classi

    In pratrica volevo inserire nel try: se il valore letto è uguale a 1 allora manda in uscita il messaggio:il dispositivo è acceso e pronto all'uso.
  • Re: Chiarimento classi

    finché non fai un parseInt su quella stringa lett
    Hai ragione anche se ancora non so cosa sia parseInt,ma suppongoqualcosa per cambiare la stringa in intero.
    Ricorreggo.
  • Re: Chiarimento classi

    trixy ha scritto:


    In pratrica volevo inserire nel try: se il valore letto è uguale a 1 allora manda in uscita il messaggio:il dispositivo è acceso e pronto all'uso.
    Si è capito ma ripeto, non è a questo che serve il try, potresti farne tranquillamente a meno. E se ti interessa solo testare la condizione che la stringa inserita sia pari a "1", senza aver bisogno del numero più avanti, puoi fare tranquillamente a meno di convertirla in numero (che è l'unica parte per cui servirebbe il try catch, che evita un errore nel caso di una stringa non "numerica").
  • Re: Chiarimento classi

    Ultima cosa che mi è venuta guardando questo esercizio con il costrutto case.
    Fino ad ora per far funzionare il programma ho usato un ciclo for ma mi sto rendendo conto che sarebbe meglio utilizzare un do-while.
    Mi chiedo: è possibile mettere come condizione del while la barra spaziatrice?
  • Re: Chiarimento classi

    trixy ha scritto:


    Mi chiedo: è possibile mettere come condizione del while la barra spaziatrice?
    Detto così ha relativamente (poco) senso. Cioè dovresti precisare meglio cosa vuoi fare. E comunque se usi Scanner, i whitespace (spazi, tab ecc..) sono i delimitatori predefiniti, quindi non li ottieni. A meno che usi nextLine() per cui puoi ottenere una linea intera che può contenere anche spazi.
  • Re: Chiarimento classi

    Nel senso che quando premo la barra spaziatrice il ciclo si arresta.
Devi accedere o registrarti per scrivere nel forum
46 risposte