Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    30

    Ricerca di stringe parziali

    Ciao a tutti,
    ho un problema. Sto facendo un programma che simula un distributore di dvd. Il file di testo da cui leggo i dati è così strutturato:

    La_nona_porta Roman_Polanski 2347483932032 10 15
    che significa: titolo regista codice dvdDisponibili e dvdTotali

    Ovvero: il titolo è separato da degli underscore!
    Nel programma devo inserire da tastiera il nome del film che voglio noleggiare e aggiornare il numero di dvd disponibili(e fin qui l'ho fatto e funziona). Ora però devo far si che la ricerca sia effettuabile anche con stringhe parziali per esempio "nona_porta" o "La_porta" e qualora più dvd corrispondessero al criterio di ricerca, visualizzare un elenco numerato di tutti i risultati e consentire di sceglierne uno dall'elenco!

    Qualcuno sa aiutarmi?
    Vi metto qui parti di codice che ho già fatto:
    codice:
    public void load() throws IOException{
    
    		Scanner sc=new Scanner(new File(file));	
    		StringTokenizer st;
    		String[] tit;		
    		String[] reg;
    	
    		for(int k=0; k<numero_righe; k++){
    			st=new StringTokenizer(sc.nextLine(), " ");
    			String titolo= st.nextToken();
    			d[k]=new Dvd(titolo);
    		
                   StringTokenizer st2=new StringTokenizer(titolo,"_");	
    		int count2=st2.countTokens();	//
    		for(int i=0;i<count2;i++){	
    				tit=new String[count2];
    					tit[i]=st2.nextToken();
    				}
    				
    				String regista=st.nextToken();
    				d[k].setRegista(regista);
    
    				long codice=Long.parseLong(st.nextToken());
    				d[k].setCodice(codice);
    			
    				int disponibili=Integer.parseInt(st.nextToken());
    				d[k].setDisponibili(disponibili);
    			
    				int totali=Integer.parseInt(st.nextToken());
    				d[k].setTotali(totali);		
    					
    		}
    		
    		//System.out.println("Dvd caricati correttamente!");
    		//System.out.println();
    
    		
    	}
    	
    	public void noleggio(String titolo) {
    		for (int k=0;k<numero_righe;k++){
    			if((d[k].getTitolo().split("_")).equals(titolo)){
    				System.out.println("Corrispondenza trovata");
    				int disponibili=d[k].getDisponibili();
    				System.out.println("I dvd disponibili di questo film sono:  "+disponibili);
    				if(d[k].getDisponibili()>0){
    				d[k].setDisponibili(disponibili-1);
    				System.out.println("Hai noleggiato '"+d[k].getTitolo()+"'. I dvd ora disponibili del film sono: "+d[k].getDisponibili());
    				}else{ 
    					System.out.println("Non puoi noleggiare un altro dvd con questo titolo perchè sono stati tutti noleggiati!");
    				}
    			}
    		}
    	}

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Ti conviene studiarti le espressioni regolari ed avvalerti del metodo matches() della classe String.

    Esempietti:

    codice:
    String str = "La_nona_porta";
    System.out.println( str.matches(".*nona.*porta.*") );
    System.out.println( str.matches(".*La.*porta.*") );
    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

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.