Newsgroup: it.comp.java
Titolo: System.exit(0);

stavo realizzando programmini in java x esercizio dove ci sono una serie
dei costrutti if-else dentro a un ciclo while.
Preferirei che ,in certi casi, il pc non eseguisse le operazioni seguenti.
Precisamente vorrei che, se delle determinate condizioni vengono valutate
corrette,il programma java si fermi.
È vero che potrei mettere la parte restante del codice in un ramo else, ma
data la grande quantità di if ed else verrebbe fuori un bel casino.
Per cui (scusate tutto questo giro x la domanda) volevo sapere se è giusto
usare il System.exit(0) dopo una condizione per far smettere al programma
di funziare.
Cioè, ho provato a fare così ed ho ottenuto il risultato voluto, ma non so
se magari è meglio non usare il System.exit perchè in certi casi potrebbe
incasinare il pc o robe simili....
insomma....si può fare o è uno stratagemma usato solo dai principianti,che
sono già meglio di me :( , per evitare qualche if-else?
grazie e scusate x il casino!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 di funziare.
IMHO, sarebbe piu' "pulito" fare un return oppure gettare un'exception.
In entrambii casi dovresti valutare il valore ritornato o gestire 
l'exception.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 l'exception.
Per curiosità, se il metodo è void (e quindi non ritorna nulla), e non si 
vuole generare un'eccezione (nel caso di programmi con molti metodi si 
rischia di doverla gestire in molti di essi, o cumunque di usare strutture 
più complesse dell'if then che si vorrebbe evitare), c'è un'alternativa?
Penso di no, perchè return genera, in questo caso, un errore di 
compilazione, e break funziona soli all'interno di cicli for, while o do, 
sbaglio?
Marco 

 più complesse dell'if then che si vorrebbe evitare), c'è un'alternativa?
Al momento non me ne viene in mente nessuna ... Tranne System.exit(), 
che pero' solitamente dovrebbe essere usato in caso di interruzioni 
"anomale" del programma.
Se non vuoi gestire eccezioni, allora fai semplicemente un return nel 
metodo main(), cosi' il programma termina in maniera "pulita".


 metodo main(), cosi' il programma termina in maniera "pulita".
bhe....io sono proprio ai principi della programmazione java.....il fatto
è ke stavo realizzando un programmino x il calcolo dei giorni che sono
passati dall'inizio dell'anno.
capite che dovendo realizzarlo solo con if-else-while non è proprio una
bella cosetta...devo porre una condizione per la quale se la data è
sbagliata (55 marzo!!!)allora il programma deve dire la data è sbagliata
ma non eseguire il resto.Quindo già una prima if.Poi pensate al discorso
degli anni bisestili,se l'anno è bisestile febbraio a 29 giorni,se l'anno
è bisestile ma è fine secolo allora vai a vedere se si può dividere per
400......tutto un casino così!mettetemele voi tutte le if
necessarie!!ovviamente il programma deve terminare se la data è
insesistente tipo il 30 febbraio!a quel punto mi son detto:mettiamoci un
bel system.exit!ho fatto bene? 


 sbagliata (55 marzo!!!)allora il programma deve dire la data è sbagliata
Ti ricordo che Java è un linguaggio orientato agli oggetti.
Prova a riprogettare i tuoi esercizi e sviluppare delle piccole architetture 
ad oggetti che ti semplifichino la vita.
Ciao
Marco 

 bel system.exit!ho fatto bene? 
Tieni separata l'individuazione degli errori (e la loro segnalazione)
dalla loro gestione.
Se hai un metodo che effettua il parsing di una stringa che
dovrebbe contenere una data, allora e' giusto che il codice sollevi
specifiche eccezioni per segnalare condizioni anomale.
Sara' responsabilita' di chi invoca tale metodo intercettare le
eccezioni e decidere come gestirle, ad esempio visualizzando messaggi
su stdout, oppure scrivendo gli errori su un file di log, ecc.
Ciao!
Roberto

 ad oggetti che ti semplifichino la vita.
tipo????????in ke senso riprogettare gli esercizi?fare piccoli programmini
ad esempio x far andare una lavatrice?o il mio stesso programma xò
riformulandolo in maniera più immediata? 
ciao!


 su stdout, oppure scrivendo gli errori su un file di log, ecc.
ah...certo.....
?????????
scusa ma sono ignorante come na sapa....  :)
ciao!


 riformulandolo in maniera più immediata?
Java è un linguaggio ad oggetti.
Se usi Java per fare programmazione procedurale, non stai seguendo la strada 
giusta.
Il tuo obiettivo non deve essere far funzionare il programma a tutti i 
costi, ma dargli una struttura e far interagire tutti gli oggetti tra loro.
Separa le varie parti del problema.
Devi contare i giorni dall'inizio dell'anno.
Allora puoi realizzare una classe che legge i dati inseriti dall'utente.
E li passa ad un'altra classe che controlla la validità del dato inserito.
E poi un'altra che effettua il conteggio.
E magari un'ultima che effettua l'outout.
In presenza di errori, puoi usare le eccezioni.
E' un metodo molto elegante per evitare che il programma crashi o esca.
E poi tu puoi metterci una pezza ed agire in un qualche modo.
Ciao
Marco 

 ciao!
Nessuno nasce "imparato", pero' bisogna sforzarsi di
imparare cose nuove! ;)
Ciao!
Roberto

un esempio vale + di mille descrizioni....
public static void main(String[] args){
 try{
  if(! controllaStringa(args[0]){
   System.out.println("La stringa inserita non puo' essere trasformata
in data.");
   return;
  }
 }catch(Exception e){
  System.out.println("Errore nella lettura della stringa");
  return;
 }
 try{
  java.util.Date data = trasformaInData(args[0]);
  System.out.println("La data e' stata letta correttamente");
 }catch(Exception e){
  System.out.println("La data specificata non puo' esistere.");
 }
e nella tua funzione "controllaStringa" controlli che l'utente ti abbia
scritto la data in formato corretto (ad esempio
giorno2cifre/mese2cifre/anno4cifre), se passi questo controllo la
funzione "trasformaInData" diventa piu' semplice perche' deve solo
controllare che la data sia valida, ma non deve fare fatica a estrarre
i dati dalla stringa perche' sicuramente essa e' nel formato corretto
(l'hai gia' controllata).
Se trovi qualcosa che non va, lanci una eccezione.

 E poi tu puoi metterci una pezza ed agire in un qualche modo.
bhe....diciamo che è solo da un paio di mesi che ho preso in mano java e
più d i qualche singolo programmino tipo questo non faccio
nient'altro!questi,chiamamoli così,esempietti,sono soltanto per
esercizio...intanto imparo a muovervi un'attimino nel mondo java!poi
allora potrò concentrarmi sul linguaggio ad oggetti!
d'altra parte è anche vero che il java l'ho utilizzo come pascal....allora
non ci siamo!
ciao


 non ci siamo!
Sforzati ad usare java come va usato.
Comincia dalle cose semplici semplici, ma cerca di non snaturare troppo il 
linguaggio altrimenti rischi di prendere delle brutte abitudini che sono poi 
difficili da mandare via.
Nessuno nasce imparato, ma se segui la giusta strada è molto meglio.
Prova a partire a termine il tuo esempio, e poi rifallo in ottica OOP.
Ciao
Marco 

 "anomale" del programma.
non è vero, System.exit(int s) viene usato anche per uscite normali
(valore di s = 0), se l'interruzione è anomala devi usare un valore di s
!= 0.
Per esempio quando setti ad un frame la defaultCloseOperation =
EXIT_ON_CLOSE il frame fa proprio questo, esegue System.exit(0)
-- 
Pietro
(\_/)  <- This is Bunny.
(°_°)     Copy Bunny into your signature to help
(> <)     him on his way to world domination.