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

    gestione eccezioni verifica riga di caratteri alfabetici

    Salve, mi servirebbe un metodo che legge da input una riga e che mi genera una eccezione nel caso sono violati questi punti:
    - la riga deve essre costituita solo da 8 lettere separate da spazi tipo :
    a b c d e f g h
    -non devono comparire numeri o altri simboli

    Volevo qualche consiglio ,premetto ho letto qualcosina sulle eccezioni ma non sono pratico, ho fatto una prova :

    codice:
    public class MacinaStringhe_2 {
    	
    	public static void main(String[] args) {
        
       boolean cicla;
    	ProvaEccezione P = new ProvaEccezione();
    	do{
    				 try{
                         cicla=false;					 
    				     P.leggiRigaElanciaEccez();
    				   }catch (Exception e) {
    					 cicla =true;
    					System.out.println("NON VA BENE !!riprova");
    				}	
    				   
    	}while(cicla);			
    		
    
            }
    
    }
    //////////////////////
    public class ProvaEccezione {
    	private String riga;
    	private Scanner in_Str=new Scanner(System.in);
    	
    	public ProvaEccezione() {
    		// TODO Auto-generated constructor stub
    	}
    	
    	void leggiRigaElanciaEccez() throws Exception{
    		 System.out.println("INSERISCI RIGA ");
    		 
    		    riga=in_Str.nextLine(); 
    		      if(  * ) throw new Exception();  //<<<<<---------------
    	}
    }
    Innanzitutto mi chiedevo se il try catch si trova al posto giusto o va per esempio nel metodo dove viene letta la riga..?
    poi nell'if del metodo soprastante*,per tenere conto che la riga sia secondo quanto detto, cioè che sia composta da lettere...come potrei fare? è obbligatorio dividere in token??

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    forse conviene lavorare con le Regular Expressions, di cui avrai sicuramente sentito parlare.
    Esempio:
    codice:
    import java.util.regex.*;
    /**
     *
     * @author Andrea
     */
    public class Regex01 {
        
        public static void main (String[] args) {
            String pattern = "\\w( \\w){7}";
            Pattern p = Pattern.compile(pattern);
            String[] test = new String[] {
                "a b c d e f g h", //corretto
                "ab c d e f g h i", //errato, due caratteri attaccati
                "1 . 4 a b c d e", // errato, altra roba
                "A b C D e F g H", //corretto
                "A b c d", // errato, troppo corto
                "a  b c d e f g h", // errato, doppio spazio
            };
            Matcher m;
            for (String s : test) {
                m = p.matcher(s);
                System.out.println(s +" : " +  m.matches());
            }        
        }
        
    }
    dove
    codice:
    \\w = carattere (solo lettere)
    ( \\w){7} = spazio e carattere, ripetuto 7 volte
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    infinite grazie il codice cosi' è tutta un'altra cosa ,visto che ci siamo per curiosità non si sa mai potrebbe sempre servire:

    -vorrei modificare String pattern = "\\w( \\w){7}"; in modo che vengano accettate solo le righe sempre con le stesse regole di prima ,ma MAIUSCOLE e dopo le prime 4 lettere si dovrebbero poter mettere invece di solo 1 ,1 o più spazi cosi:
    A B C D**C D R S
    A B C D***R T Y K
    ...

    (*-->spazio)

    - per le maiuscole dovrei cambiare W con [A-Z] ?
    Grazie 1000.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Boh, mi viene in mente un pattern del genere
    codice:
    String pattern = "([A-Z] ){4}( )*([A-Z] ){3}[A-Z]";
    magari si può semplificare, oppure è proprio sbagliato
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.