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

    controlli su elementi di una riga

    Salve, dovrei riuscire a dividere gli elementi di una stringa passata da un file di testo e controllare se ci sono dei caratteri ripetuti all'interno. In pratica ho nel mio file di testo la riga

    2132

    devo quindi crearmi il metodo che mi controlla se ci sono elementi ripetuti (in questo caso il 2) oppure no. Come posso fare?
    Prima penso devo usare StringTokenizer per dividermi char per char ma anche qui non ho spazi ma come devo fare???

    L'intento finale dell'esercizio sarà poi di controllare una soluzione del gioco del sudoku, quindi avro' altre righe e piu' colonne...ma per iniziare...questo mi basta. grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Un'idea potrebbe essere quella di sfruttare la classe java.util.TreeSet.

    Scorri la tua stringa, estraendo ciascun carattere e provi ad inserirlo all'interno di un TreeSet.

    Se l'inserimento va a buon fine, il carattere non è già presente nel Set (un insieme non può avere elementi ripetuti), altrimenti il carattere esiste già.

    Un esempio di codice:
    codice:
    public boolean controlla(String str) {
       boolean result = true;
    
       TreeSet ts = new TreeSet();
       for(int i=0; i<str.length(); i++) {
          result = result && ts.add("" + str.charAt(i));
       }
    
       return result;
    }
    Non è l'unica soluzione e forse non è nemmeno la più efficiente... ma sicuramente è molto veloce e comoda da implementare.


    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

  3. #3
    Grazie per la risp, funziona a meraviglia!

    Ora sto impazzendo nel procedere con l'esercizio, posto i due metodi:
    codice:
    protected boolean ripetizioni(String line){
    		boolean result = true;
    		TreeSet<String> ts = new TreeSet<String>();
    		for(int i=0;i<line.length();i++){
    			result = result && ts.add(""+line.charAt(i));
    		}
    		return result;
    		
    	}//ripetizioni
    	
    	protected void controllo(String filename){
    		try{
    			BufferedReader br = new BufferedReader(new FileReader(filename));
    			String line = br.readLine();
    			ArrayList<String> righe = new ArrayList<String>(); //qui memorizzo le righe della matrice
    			ArrayList<String> colonne = new ArrayList<String>(); //qui memorizzo le colonne della matrice
    		int r,c;
    		//char[] app;
    		for(r=0;r<riga;r++){
    			righe.add(new String(mat[r])); //add delle varie righe
    			for(c=????;c<colonna;c++){	
    				colonne.add(new String(mat[c])); 
    			}
    
    		}	
    		
    		System.out.println(righe);
    		System.out.println(colonne);
    		for(int i=0;i<righe.size();i++){
    			if(ripetizioni(righe.get(i))){
    				System.out.println("soluzione valida");
    			}else{
    				System.out.println("soluzione non valida");
    			}
    		}
    1.Nel metodo controllo() non riesco ad ottenere le mie colonne giuste della matrice, a differenza delle righe che finiscono esattamente come stringhe all'interno del mio ArrayList righe, cosa sbaglio???? (ho lasciato anche c con i punti interrogativi perchè non so cosa metter li).
    2.Secondo problema, banale, ma mi dimentico sempre come si faccia :master: mi vengono stampate le tre scritte "soluzione valida" a seconda della riga letta, io invece vorrei ottenere solamente una stampata per tutte le letture, come posso fare?

    Questo il mio output ora:
    filename qui sotto
    123
    312
    231

    [123, 312, 231]
    ???????????????

    soluzione valida
    soluzione valida
    soluzione valida

    attendo una risposta sto impazzendo , grazie mille! VVoVe:

  4. #4
    nessuno riuscirebbe ad aiutarmi. grazie

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