Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86

    [JAVA] ritorno menu precedente con while

    ciao ragazzi vorrei sapere come fare per ritornare ad inserire il campo dell'indirizzo in caso si superi il limite massimo di caratteri consentiti.. e nel caso che il numero di caratteri sia corretto continuare con il restante codice del programma ( che chiede all'untente d'inserire altre informazioni sull'utente )
    codice:
    	System.out.println("VUOI INSERIRE L'INDIRIZZO? S per si N per no")
    		Scanner x = new Scanner(System.in);
    		risposta = x.next();
    		boolean done = false;
    		while (!done)
    		{
    			if (risposta.equalsIgnoreCase("n"))
    			done = true;
    			else
    				System.out.println("inserisci indirizzo MAX 25 CARATTERI");
    				Scanner inn = new Scanner(System.in);
    				String indirizzo = "";
    				indirizzo = inn.next();
    				if (indirizzo.length() >= 25)
    				{
    					System.out.println("IL NUMERO DEI CARATTERI PER L'INDIRIZZO è");
    					System.out.println("SUPERIORE AL CONSENTITO PER QUESTO L'INDIRIZZO");
    					System.out.println("VERRA' IGNORATO");
    					indirizzo = "";
    					done = true;
    									
    						
    				}
    				voce.setIndirizzo(indirizzo);
    				done = true;
    				
    				
    			
    		}

  2. #2
    Innanzitutto il tuo else non l'hai racchiuso tra { }

    Poi devi modificare leggermente il secondo if

    codice:
    if (indirizzo.length() >= 25){
         System.out.println("IL NUMERO DEI CARATTERI PER L'INDIRIZZO è");
         System.out.println("SUPERIORE AL CONSENTITO PER QUESTO L'INDIRIZZO");
         System.out.println("VERRA' IGNORATO");
         indirizzo = "";
         done = true;
    }else{
         voce.setIndirizzo(indirizzo);
         done = false;
    }
    Al mio segnale... scatenate l'inferno!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    35
    A parer mio ci sono un paio di errori di logica.
    Il primo è nel fatto che appena leggi la risposta se si vuole inserire un indirizzo, devi controllare la risposta subito e ciclare sull'indirizzo solamente in base a quest'ultima.
    Poi la condizione di permanenza del while, la variabile done, deve essere cambiata a true solamente se l'indirizzo è valido. Se vale true esce, se vale false cicla.

    codice:
    System.out.println("VUOI INSERIRE L'INDIRIZZO? S per si N per no");
    		
    InputStreamReader input = new InputStreamReader (System.in);
    BufferedReader tastiera = new BufferedReader (input);
    String testo = new String();
    		
    try {
    	testo = tastiera.readLine();
    }catch(Exception ex){
    	System.err.println("Impossibile leggere da tastiera: ");
    	System.err.println(ex.getMessage());
    	System.exit(1);
    }
    // Se risponde si allora catturo l'indirizzo
    if("S".equalsIgnoreCase(testo)){
    	boolean done = false;
    	// Ciclo finchè non viene inserito un indirizzo valido
    	while (!done){
    		String indirizzo = new String();
    		System.out.println("inserisci indirizzo MAX 25 CARATTERI");
    		try {
    			indirizzo = tastiera.readLine();
    		}catch(Exception ex){
    			System.err.println("Impossibile leggere da tastiera: ");
    			System.err.println(ex.getMessage());
    			System.exit(1);
    		}
    		if (indirizzo.length() > 25){
    			System.out.println("IL NUMERO DEI CARATTERI PER L'INDIRIZZO è");
    			System.out.println("SUPERIORE AL CONSENTITO PER QUESTO L'INDIRIZZO");
    			System.out.println("VERRA' IGNORATO");
    			indirizzo = "";
    			// L'indirizzo non è valido, quindi imposto la condizione del ciclo in modo da continuare
    			done = false;
    		}
    		else{
    			// La lunghezza dell'indirizzo è corretta
    			System.out.println("Indirizzo valido.");
    			//voce.setIndirizzo(indirizzo);
    			// L'indirizzo è valido, quindi imposto la condizione del ciclo in modo da uscire
    			done = true;
    		}
    	}
    }
    		
    // Alla fine dell'applicazione devo chiudere Stream e Buffer prima di uscire.
    try{
    	if(tastiera != null) tastiera.close();
    	if(input != null) input.close();
    }catch(Exception ex){
    	System.err.println("Errore di sistema.");
    	System.err.println("Impossibile chiudere Stream e Buffer");
    	System.exit(1);
    }
    		
    System.out.println("Arrivederci.");
    System.exit(0);

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86
    grazie siete stati mitici

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    86
    pero vorrei chiedere una cosa, se inserisco l'indirizzo mi dice ke l'indirizzo è corretto e il programma esce se invece dopo avere inserito un indirizzo corretto volessi uscire dal while e continuare con l'inserimento di altri campi ? cosa dovrei fare?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    35
    Il programma esce perchè dopo il while non c'è nulla, devi semplicemente aggiungere le richieste necessarie dopo il while, anzi, precisamente dopo la parentesi che controlla la risposta alla richiesta di indirizzo

    codice:
    System.out.println("VUOI INSERIRE L'INDIRIZZO? S per si N per no");
    		
    InputStreamReader input = new InputStreamReader (System.in);
    BufferedReader tastiera = new BufferedReader (input);
    String testo = new String();
    		
    try {
    	testo = tastiera.readLine();
    }catch(Exception ex){
    	System.err.println("Impossibile leggere da tastiera: ");
    	System.err.println(ex.getMessage());
    	System.exit(1);
    }
    // Se risponde si allora catturo l'indirizzo
    if("S".equalsIgnoreCase(testo)){
    	boolean done = false;
    	// Ciclo finchè non viene inserito un indirizzo valido
    	while (!done){
    		String indirizzo = new String();
    		System.out.println("inserisci indirizzo MAX 25 CARATTERI");
    		try {
    			indirizzo = tastiera.readLine();
    		}catch(Exception ex){
    			System.err.println("Impossibile leggere da tastiera: ");
    			System.err.println(ex.getMessage());
    			System.exit(1);
    		}
    		if (indirizzo.length() > 25){
    			System.out.println("IL NUMERO DEI CARATTERI PER L'INDIRIZZO è");
    			System.out.println("SUPERIORE AL CONSENTITO PER QUESTO L'INDIRIZZO");
    			System.out.println("VERRA' IGNORATO");
    			indirizzo = "";
    			// L'indirizzo non è valido, quindi imposto la condizione del ciclo in modo da continuare
    			done = false;
    		}
    		else{
    			// La lunghezza dell'indirizzo è corretta
    			System.out.println("Indirizzo valido.");
    			//voce.setIndirizzo(indirizzo);
    			// L'indirizzo è valido, quindi imposto la condizione del ciclo in modo da uscire
    			done = true;
    		}
    	}
    }
    
    // ALTRE RICHIESTE
    System.out.println("Vuoi Inserire ....... ?");
    try {
    	testo = tastiera.readLine();
    }catch(Exception ex){
    	System.err.println("Impossibile leggere da tastiera: ");
    	System.err.println(ex.getMessage());
    	System.exit(1);
    }
    // Se risponde si allora catturo l'indirizzo
    if("S".equalsIgnoreCase(testo)){
    	// Inserire qui il codice necessario ai controlli del campo richiesto
    }
    // ALTRE RICHIESTE
    //[...codice...]
    
    // Alla fine dell'applicazione devo chiudere Stream e Buffer prima di uscire.
    try{
    	if(tastiera != null) tastiera.close();
    	if(input != null) input.close();
    }catch(Exception ex){
    	System.err.println("Errore di sistema.");
    	System.err.println("Impossibile chiudere Stream e Buffer");
    	System.exit(1);
    }
    		
    System.out.println("Arrivederci.");
    System.exit(0);
    Puoi aggiungere quante richieste vuoi, l'importante è che le ultime istruzioni rimangano sempre le chiusure di Stream e Buffer.

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.