Visualizzazione dei risultati da 1 a 10 su 10

Discussione: scanner()

  1. #1

    scanner()

    Vorrei chiedere una cosa.
    vorrei fare in modo che inserita in input da tastiera una parola, giusta o sbagliata che sia il programma con il metodo scanner() si blocca al primo tentativo. C'è una soluzione a questo?
    ho provato ad utilizzare scanner.close(); ma mi restituisce una eccezione. forse lo uso male?
    Ultima modifica di francesco51; 09-01-2015 a 16:53

  2. #2
    Magari postare il codice ?..... no e ?

  3. #3
    ecco il codice,ha i ragione.

    codice:
    import java.util.Scanner;
    
    public class TestRisposta {
    
    
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		Domande dom = new Domande();
    		String stringa = "";
    // String uno = dom.getPRIMA_DOMANDA();
    		System.out.println(dom.getPRIMA_DOMANDA());
    		System.out.println("4\t" + "5\t\n" + "3\t" + "6\t");
    		System.out.println("Digita la risposta esatta e premi enter, oppure scrivi \"fine\" per terminare il programma.");
    		while (!(stringa = scanner.nextLine()).equals("fine")) {
    			try {
    				verificaRisposta(stringa);
    //scanner.close(); ho provato a mettere questo ma mi restituisce una eccezione
    			} 
    			catch (Exception ex) {
    				ex.printStackTrace();
    			}
    		}
    		System.out.println("Fine programma!");
    	}
    
    
    	public static void verificaRisposta(String stringa) throws Exception {
    		if (stringa.equals(RisposteDomandaA.RISPOSTA_UNO.getRisposta())) {
    			System.out.println("Risposta errata!!!");
    		} else if (stringa.equals(RisposteDomandaA.RISPOSTA_DUE.getRisposta())) {
    			System.out.println("Risposta errata!!!");
    		} else if (stringa.equals(RisposteDomandaA.RISPOSTA_TRE.getRisposta())) {
    			System.out.println("BRAVO!!! Hai indovinato!");
    		} else if (stringa.equals(RisposteDomandaA.RISPOSTA_QUATTRO.getRisposta())) {
    			System.out.println("Risposta errata!!!");
    		} else if (!(stringa.equals(RisposteDomandaA.RISPOSTA_CINQUE.getRisposta()))) {
    			System.out.println("Fine del programma...");
    	}
    }
    }

  4. #4
    Non ho capito bene vuoi bloccare il while o cosa ?

  5. #5
    vorrei solo inserire una risposta . invece così me ne fa inserire all'infinito fino a che non scrivo fine. Sicuramente devo cambiare un po' la programmazione.

  6. #6
    invece di "while" scrivi "if"....

    O ancora meglio metti stringa = scanner.nextLine(); e levi il while è l'if dato che non ti interessa la parola "fine"

  7. #7
    infatti ho inserito l'if... ragionandoci ho notato che andava meglio però non mi fa scrivere... ora vedo come hai detto tu con scanner.nextLine().

  8. #8
    mmmhhh... funziona in parete.mi dà la risposta solo della prima risposta. delle altre no e continua a chiedere inserimenti. perchè?

    codice:
    import java.util.Scanner;
    
    public class TestRisposta {
    
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            Domande dom = new Domande();
            String stringa = "";
    // String uno = dom.getPRIMA_DOMANDA();
            System.out.println(dom.getPRIMA_DOMANDA());
            System.out.println("4\t" + "5\t\n" + "3\t" + "6\t");
            System.out
                    .println("Digita la risposta esatta e premi enter, oppure scrivi \"fine\" per terminare il programma.");
            if (scanner.nextLine().equals(RisposteDomandaA.RISPOSTA_UNO.getRisposta())) {
                System.out.println("Risposta errata!");
            } else if (scanner.nextLine().equals(RisposteDomandaA.RISPOSTA_DUE.getRisposta())) {
                System.out.println("Risposta errata!");
            }else if (scanner.nextLine().equals(RisposteDomandaA.RISPOSTA_QUATTRO.getRisposta())) {
                System.out.println("Risposta errata!");
            }else if (scanner.nextLine().equals(RisposteDomandaA.RISPOSTA_TRE.getRisposta())) {
                System.out.println("Risposta esatta! :) ");
            }
        }
    }

  9. #9
    Perchè continui a chiamare nextLine....
    Come ti ho scritto nel precendete post devi memorizzarti la stringa inserita stringa = ...nextLine

  10. #10
    thank you. risolto.
    eggià.. dovevo assegnare a stringa quello che hai detto ... poi con if -else if confrontare il tutto con equals.

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.