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

    Problema con JOptionPane in un while

    Salve, volevo un aiuto!!
    Ho inserito delle JOptionPane.showInputDialog in un while.
    Ho un grosso problema però: ogni volta che ricomincia il ciclo, il JOptionPane.showInputDialog mi da il risultato che mi dovrebbe dare + il risultato del ciclo precedente.
    Esempio:
    showArray1() è un metodo che mi mostra il contenuto dell'array 1
    showArray2() è un metodo che mi mostra il contenuto dell'array 2

    while(condizione){

    corpo del while
    if(condizione2){JOptionPane.showInputDialog(null, r1.showArray1)}
    if(condizione3){JOptionPane.showInputDialog(null, r1.showArray2)}
    }

    se viene verificata la condizione1 mi mostra il contenuto dell'array1 e ricomincia, se poi viene verificata la condizione 2 mi mostra il contenuto dell'array2 aggiunto a quello che mi avevo mostrato prima. Quindi se alla terza volta viene verificata di nuovo la condizione 2 allora mi darà in output r1.showArray2+r1.showArray2+r1.showArray1!!

    Aiutatemi grazieeeee

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Purtroppo non è granché chiaro ..... non si capisce cosa è la condizione1 che dici e che nel pezzetto di codice non si vede dove/quale è .... non si capisce cosa fanno e su cosa operano i showArrayX() .... non si capisce cosa questi restituiscono che poi viene passato a showInputDialog (il secondo parametro è un Object e può essere svariate cose!) .... non si capisce se/come o no usi il valore di ritorno di showInputDialog() (se non lo usi ... che ci fai con showInputDialog??)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Problema con JOptionPane in un while

    Originariamente inviato da shark888
    while(condizione){

    corpo del while
    if(condizione2){JOptionPane.showInputDialog(null, r1.showArray1)}
    if(condizione3){JOptionPane.showInputDialog(null, r1.showArray2)}
    }

    se viene verificata la condizione1 mi mostra il contenuto dell'array1 e ricomincia, se poi viene verificata la condizione 2 mi mostra il contenuto dell'array2 aggiunto a quello che mi avevo mostrato prima.
    NOOO! Se si verifica condizione2 allora fa showArray1. Una volta fatto questo controlla se condizione3 è true: se è così esegue ANCHE showArray2!

    ps: questa è solo una mia interpretazione, cerca però di spiegarti meglio
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    AVETE PERFETTAMENTE RAGIONE MA USO JAVA DA POCHISSIMO DAVVERO!!
    provo a postare parte del codice. Questo è parte del main: il problema è nel while! praticamente io voglio che chieda chieda all'utente di scegliere una tipologia di libri, poi che mostri la lista di quei librie fatto tutto torni a chiedere all'utente la tipologia di libri e ripeta tutto fino a che l'utente non scrive exit. Il problema è che non tiene memoria del risultato precedente e quindi il nuovo risultato viene aggiunto a quello immediatamente precedente. Quindi se l'utente sceglie i libri letti esce la lista dei libri letti, in seguito se l'utente sceglie i futuri, esce la lista dei letti + i futuri e così via.. spero di esser stato un pò più chiaro.

    codice:
    		JOptionPane.showMessageDialog(null, "Questo programmino serve a tener traccia dei libri letti dall'utente" +
    		" e dei libri che ha intenzione di leggere in futuro.");
    		
    		boolean var = true;
    		while (var) {
    		scelta=JOptionPane.showInputDialog(null, "Scrivere \n-LETTI- per vedere i libri già letti\n oppure\n -FUTURI- per vedere i libri da leggere\n oppure\n -ATTUALI- per vedere i libri in fase di lettura:");
    		if(scelta.equalsIgnoreCase("letti")){
    			scelta2=JOptionPane.showInputDialog(null, "INSERIRE IL LIBRO DEL QUALE SI VOGLIONO SAPERE I DETTAGLI: \n\n"+r1.showLetti());
    			if(scelta2.equalsIgnoreCase(l1.getTitolo())){
    				JOptionPane.showMessageDialog(null, l1.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l2.getTitolo())){
    				JOptionPane.showMessageDialog(null, l2.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l3.getTitolo())){
    				JOptionPane.showMessageDialog(null, l3.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l4.getTitolo())){
    				JOptionPane.showMessageDialog(null, l4.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l5.getTitolo())){
    				JOptionPane.showMessageDialog(null, l5.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l6.getTitolo())){
    				JOptionPane.showMessageDialog(null, l6.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l7.getTitolo())){
    				JOptionPane.showMessageDialog(null, l7.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l8.getTitolo())){
    				JOptionPane.showMessageDialog(null, l8.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l9.getTitolo())){
    				JOptionPane.showMessageDialog(null, l9.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l10.getTitolo())){
    				JOptionPane.showMessageDialog(null, l10.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l11.getTitolo())){
    				JOptionPane.showMessageDialog(null, l11.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l12.getTitolo())){
    				JOptionPane.showMessageDialog(null, l12.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l13.getTitolo())){
    				JOptionPane.showMessageDialog(null, l13.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l14.getTitolo())){
    				JOptionPane.showMessageDialog(null, l14.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l15.getTitolo())){
    				JOptionPane.showMessageDialog(null, l15.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l16.getTitolo())){
    				JOptionPane.showMessageDialog(null, l16.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l17.getTitolo())){
    				JOptionPane.showMessageDialog(null, l17.getInfo());
    			}
    			if(scelta2.equalsIgnoreCase(l18.getTitolo())){
    				JOptionPane.showMessageDialog(null, l18.getInfo());
    			}
    		}
    		if(scelta.equalsIgnoreCase("futuri")){
    			scelta3=JOptionPane.showInputDialog(null, "INSERIRE IL LIBRO DEL QUALE SI VOGLIONO SAPERE I DETTAGLI: \n\n"+r1.showFuturi());
    			if(scelta3.equalsIgnoreCase(l19.getTitolo())){
    				JOptionPane.showMessageDialog(null, l19.getInfo());
    			}
    			if(scelta3.equalsIgnoreCase(l21.getTitolo())){
    				JOptionPane.showMessageDialog(null, l21.getInfo());
    			}
    			if(scelta3.equalsIgnoreCase(l22.getTitolo())){
    				JOptionPane.showMessageDialog(null, l22.getInfo());
    			}
    			if(scelta3.equalsIgnoreCase(l23.getTitolo())){
    				JOptionPane.showMessageDialog(null, l23.getInfo());
    			}
    			if(scelta3.equalsIgnoreCase(l24.getTitolo())){
    				JOptionPane.showMessageDialog(null, l24.getInfo());
    			}
    		}
    		if(scelta.equalsIgnoreCase("attuali")){
    			scelta4=JOptionPane.showInputDialog(null, "INSERIRE IL LIBRO DEL QUALE SI VOGLIONO SAPERE I DETTAGLI: \n\n"+r1.showAttuali());
    			if(scelta4.equalsIgnoreCase(l20.getTitolo())){
    				JOptionPane.showMessageDialog(null, l20.getInfo());
    			}
    		}
    		if (scelta.equalsIgnoreCase("exit")){ 
    			var = false;
    			}
    	}
    }
    }

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da shark888
    AVETE PERFETTAMENTE RAGIONE MA USO JAVA DA POCHISSIMO DAVVERO!!
    Postare tutto in maiuscolo in un forum (qualunque) equivale ad urlare... non si fa.

    In secondo luogo, il Regolamento interno prevede delle regole da seguire quando si posta il codice, proprio per evitare che venga visualizzato in modo così confusionare ed incomprensibile.

    Vedi il punto 6 del regolamento che ti ho linkato.

    Correggo io.


    Ciao.
    "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

  6. #6
    Caro LeleFT,
    mi scuso per le "urla" ma non sapevo di questa cosa. Comunque grazie per i suggerimenti.
    Ho risolto il problema e nessuno avrebbe potuto aiutarmi dal momento che il problema era in un metodo il cui corpo non ho postato.
    Grazie ancora per la disponibilità.

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