Author Topic: Creare una sorta di "goto" uscendo da un if-else  (Read 3423 times)

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #15 on: January 17, 2017, 03:06:21 PM »
Per necessità di "matematica", i tre valori devono essere int, uno di essi peraltro strettamente positivo (e quest'ultimo l'abbiamo sistemato assieme ;) ).
Più che altro mi sto ponendo il dubbio se occorra effettivamente controllare tutto il "valore" che invio in input (cioè che manchi sia il punto decimale, ma anche il carattere a, il trattino, il carattere p, ecc...) o se, tra le millemila classi Java, ne esiste una che verifica il tipo di dato d'ingresso, una sorta di "if by type". Purtroppo nel corso abbiamo svolto soltanto esempi nei quali i dati erano inclusi e inizializzati nel codice stesso (me ne chiedo l'utilità, a parte la didattica) e quindi scritti coerentemente col tipo dichiarato (al massimo si è fatto qualche casting ove necessario). L'unico caso di input da tastiera è stato poi seguito dal System.out.println del dato stesso come inserito, guarda caso di tipo string per non porsi troppi dubbi che fermassero la lezione...

Proverò col debugger, vediamo cosa mi segnala...

L'errore comunque lo genera nel momento in cui riceve il primo dato che risulta non int.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline devilicecream

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #16 on: January 18, 2017, 02:52:41 AM »
Credo che dovresti anche leggere la documentazione del modulo Scanner che contiene la funzione .nextInt() che stai usando per parsare l'input da tastiera.
Probabilmente il problema si verifica perchè la funzione .nextInt() genera un errore che non stai gestendo quando le passi un carattere non numerico.
 
The following users thanked this post: Gas75

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #17 on: January 18, 2017, 06:46:23 PM »
Sì, il discorso sulla classe Scanner lo sto trovando da più fonti... anche se non ho avuto il tempo materiale per approfondire.
Ho anche visto qualcosa circa le classi Wrapper, ma avendo già importato la classe Scanner, forse (e sottolineo forse ;D) è bene sfruttare quella...
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #18 on: January 18, 2017, 06:55:12 PM »
You are not allowed to view links. Register or Login
Un'altra cosa, stai utilizzando un debugger per fare inspection a runtime delle variabili nello stack? [...]
Poi basta usare dei breakpoint dove avvengono le cose "strane" per vedere in quel momento quali sono i valori contenuti nelle variabili.
Se avessi usato il debugger sicuramente ti saresti accorto che anche se dai a r il valore 5.1, nella variabile verrà inserito il valore 5, perchè essendo un intero non supporta i valori decimali.
Quando immetto 5.1, l'errore è
Code: You are not allowed to view links. Register or Login
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at radicindic.RadiciNdiC.main(RadiciNdiC.java:39)
che credo esprima in "javese" :D che ho immesso un tipo di valore inatteso, prima che non gestibile dalle operazioni successive (anche dando a r tipo double, ottengo un errore quando il programma ha ricevuto i tre valori e inizia a manipolarli).
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline devilicecream

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #19 on: January 19, 2017, 12:15:31 AM »
Esatto, come ti scrivevo prima il problema è che stai utilizzando la .nextInt() nella maniera sbagliata, e quindi il programma non gestisce il caso in cui immetti un punto. Leggi la documentazione ufficiale della classe Scanner e cerca su stackoverflow (in inglese) come acquisire i caratteri numerici, ignorando gli input inattesi. Vedrai che riuscirai a risolvere il problema!
 

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #20 on: January 19, 2017, 05:24:10 PM »
Mi sto appunto leggendo il documento ufficiale della classe Scanner dal sito docs.oracle...
E' un po' dispersivo per i miei gusti (e il tempo che riesco a dedicarci) ma se non esce qualcosa da lì, non credo esca da altre fonti.
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #21 on: January 22, 2017, 07:41:40 PM »
Non conta quanto e come studi ma come scrivono le cose sui testi che vai a leggere!
Ciò che non avevo capito è che in Java si gestiscono le eccezioni e non le cause dell'errore... Quindi mi ponevo la questione se il dato immesso fosse di tipo int piuttosto che intercettare ("to catch") il messaggio di errore generato da Java!
Con un opportuno try/catch il programma continua a funzionare (immettendo i valori di tipo corretto ha girato da subito), intercetta e gestisce qualunque errore d'immissione ma, in tal caso, non riesco a rimandarlo alla richiesta dell'input :( Cioè se non faccio chiudere il Run con un controllo booleano, mi scrive all'infinito l'eccezione relativa all'errore trovato... Mi manca insomma il fatidico "goto" che, con un linguaggio di minori pretese, mi avrebbe risparmiato una settimana di sclerate... :D
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline devilicecream

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #22 on: January 24, 2017, 03:51:49 AM »
Purtroppo non tutti gli autori dei libri sono bravissimi a trasmettere le informazioni, specie quando si tratta di argomenti tecnici, che non sono proprio semplici ne da acquisire, ne da trattare.
Finchè non inventeranno la trasmissione di informazioni brain to brain, dobbiamo purtroppo arrangiarci con le risorse che abbiamo: libri, corsi online, corsi fisici e l'aiuto delle persone su internet.
Anche io, quando ero alle prime armi, avevo difficoltà a disegnarmi in mente gli algoritmi dei programmi che sviluppavo. È una cosa che viene con il tempo e con l'esperienza, ma solo se ci si impegna a migliorarsi con le risorse a disposizione. Non certo se si abbandona perchè un libro è troppo complicato da leggere.
Non esiste una regola generale che dice che in Java gli errori vanno gestiti tramite eccezioni e non a priori. Anzi, un approccio del genere è spesso deleterio nei confronti delle performance dei programmi. La questione varia caso per caso, e soprattutto bisogna sapere come utilizzare i try...catch all'interno del flusso dei programmi (quindi all'interno di eventuali cicli o ricorsioni).
Secondo me hai bisogno di rivedere un po' di teoria, se non riesci a controllare il flusso del programma senza il goto. La maggior parte dei linguaggi moderni non ha il costrutto goto proprio per evitare di incorrere in bad practices e per indurre gli sviluppatori a scrivere dei programmi ben strutturati.
Continua a provare e a studiare, vedrai che ce la farai!
 
The following users thanked this post: davenull

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #23 on: January 24, 2017, 05:29:18 PM »
Il problema è stato risolto tramite una classe apposita che cura il try/catch per ogni input che invio al programma.

Lo step successivo è cercare di "montare" il programma su una interfaccia grafica, e qui o lo faccio per piattaforma Android - ma non credo interessi a qualcuno svolgere da smartphone le operazioni che svolge il mio programma :D , oppure mi devo tuffare nelle Java Visual Guide praticamente da zero (non essendo argomento del corso).
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline davenull

  • Administrator
  • Sr. Member
  • *****
  • Posts: 321
  • Thanked: 13 times
  • Gender: Male
  • JonixLug Co-Founder & Administrator
    • View Profile
    • davenull's blog
Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #24 on: January 26, 2017, 04:28:17 AM »
You are not allowed to view links. Register or Login
Purtroppo non tutti gli autori dei libri sono bravissimi a trasmettere le informazioni, specie quando si tratta di argomenti tecnici, che non sono proprio semplici ne da acquisire, ne da trattare.
Finchè non inventeranno la trasmissione di informazioni brain to brain, dobbiamo purtroppo arrangiarci con le risorse che abbiamo: libri, corsi online, corsi fisici e l'aiuto delle persone su internet.
Anche io, quando ero alle prime armi, avevo difficoltà a disegnarmi in mente gli algoritmi dei programmi che sviluppavo. È una cosa che viene con il tempo e con l'esperienza, ma solo se ci si impegna a migliorarsi con le risorse a disposizione. Non certo se si abbandona perchè un libro è troppo complicato da leggere.
Non esiste una regola generale che dice che in Java gli errori vanno gestiti tramite eccezioni e non a priori. Anzi, un approccio del genere è spesso deleterio nei confronti delle performance dei programmi. La questione varia caso per caso, e soprattutto bisogna sapere come utilizzare i try...catch all'interno del flusso dei programmi (quindi all'interno di eventuali cicli o ricorsioni).
Secondo me hai bisogno di rivedere un po' di teoria, se non riesci a controllare il flusso del programma senza il goto. La maggior parte dei linguaggi moderni non ha il costrutto goto proprio per evitare di incorrere in bad practices e per indurre gli sviluppatori a scrivere dei programmi ben strutturati.
Continua a provare e a studiare, vedrai che ce la farai!

proprio per questo problema ti do un grossissimo consiglio. quando devi i studiare un qualsiasi linguaggio di programmazione, procurati più libri che trattano la stessa cosa, e confronta tra loro gli argomenti. e magari procurati una sfilza di sorgenti di esempio per capire meglio!!!
E-Mail: [email protected]
Website: You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
 
The following users thanked this post: Gas75

Offline NebulasIT

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #25 on: January 26, 2017, 09:50:56 PM »
Quote
proprio per questo problema ti do un grossissimo consiglio. quando devi i studiare un qualsiasi linguaggio di programmazione, procurati più libri che trattano la stessa cosa, e confronta tra loro gli argomenti. e magari procurati una sfilza di sorgenti di esempio per capire meglio!!!

Faccio la stessa cosa, più che altro le doc inglesi sono sempre le più complete...
Vi faccio un topic con un pò di doc, dove potete studiare dai :D
Website:  You are not allowed to view links. Register or Login
Email: [email protected]
 

Offline davenull

  • Administrator
  • Sr. Member
  • *****
  • Posts: 321
  • Thanked: 13 times
  • Gender: Male
  • JonixLug Co-Founder & Administrator
    • View Profile
    • davenull's blog
Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #26 on: January 28, 2017, 09:09:55 PM »
You are not allowed to view links. Register or Login
Quote
proprio per questo problema ti do un grossissimo consiglio. quando devi i studiare un qualsiasi linguaggio di programmazione, procurati più libri che trattano la stessa cosa, e confronta tra loro gli argomenti. e magari procurati una sfilza di sorgenti di esempio per capire meglio!!!

Faccio la stessa cosa, più che altro le doc inglesi sono sempre le più complete...
Vi faccio un topic con un pò di doc, dove potete studiare dai :D

se sono coperti da copyright non postarli, comunque si, i documenti in inglese sono sempre più completi!!!
E-Mail: [email protected]
Website: You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
 

Offline Gas75

Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #27 on: February 03, 2017, 04:18:17 PM »
You are not allowed to view links. Register or Login
quando devi i studiare un qualsiasi linguaggio di programmazione, procurati più libri che trattano la stessa cosa, e confronta tra loro gli argomenti.
:o Per acquisire completezza ci può stare, ma così mi sembra quasi di leggere due quotidiani diversi per farmi un'idea obiettiva su una notizia, mentre invece parliamo di programmazione...
Ci sono 10 tipi di persone: chi conosce il codice binario e chi no.
 

Offline davenull

  • Administrator
  • Sr. Member
  • *****
  • Posts: 321
  • Thanked: 13 times
  • Gender: Male
  • JonixLug Co-Founder & Administrator
    • View Profile
    • davenull's blog
Re:Creare una sorta di "goto" uscendo da un if-else
« Reply #28 on: February 03, 2017, 05:36:20 PM »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
quando devi i studiare un qualsiasi linguaggio di programmazione, procurati più libri che trattano la stessa cosa, e confronta tra loro gli argomenti.
:o Per acquisire completezza ci può stare, ma così mi sembra quasi di leggere due quotidiani diversi per farmi un'idea obiettiva su una notizia, mentre invece parliamo di programmazione...

eh lo so ma purtroppo è così, perchè magari ti ritrovi un libro che dice una cosa che l'altro libro non dice, ecc...
te lo dico per esperienza personale!!! :)
E-Mail: [email protected]
Website: You are not allowed to view links. Register or Login

You are not allowed to view links. Register or Login
 

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40