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

    Ricercare stringhe all'interno do un array parola per parola

    Salve a tutti, sto creando un semplice programmino che rilevi i conti in economia azienda in partita doppia, per una tesina sulla programmazione del 5 anno di superiore. per semplificare il lavoro in esposizione ho creato una JTextField che con colpi di invio ricerca nella JList che contiene un bel po di nomi dei conti, tutti quei conti che iniziano con la stessa stringa esempio:
    se scrivo nella textfield s: avrò come input
    Socio c/conferimenti
    socio c/prelevamenti ecc.... tutto bene fin quì
    il problema e se scrivo più parole, se scrivo so avrò come input:
    socio ....
    socio....
    ma anche
    fondo conto......
    il fatto è che tiene in considerazione solo la 2 cifra ignorando la s
    posto il codice vediamo se potete aiutarmi, ho cercato qualche codice simile su internet senza ottenere risultato:
    codice:
    package Codice;
    import java.util.ArrayList;
    
    
    public class FiltraggioStringa {
        
        ArrayList <String>al = new ArrayList<String>();
        String array[];
        
        public void filtra(String items[], String s){    //ARRAY, E IL FILTRO DELLA LISTA
        
            array = items;
            al = new ArrayList<String>();
            char a, b;        //SERVONO A TRASFORMARE LE LETTERE IN CORSIVO IN MODO CHE LE POSSO CONFRONTARE
            int c = 0, i = 0;        //CONTATORI NEI CICLI
            int s1, s2, s3 = 0;        //DIMENSIONI DELLE STRINGHE
            ConfrontoCaratteri cc = new ConfrontoCaratteri();    //UNA CLASSE CHE TRASFORMA LE STRINGHE IN CORSIVO
            
            while(true){
                for (c = 0; c < array.length; c++){
                    s1 = items[c].length();
                    s2 = s.length();
                    if (s1 >= s2)
                        s3 = s2;
                    else
                        s3 = s1;    
                    if (s3 >= i){        //S3 SARA' LA LUNGHEZZA PIU' PICCOLA DELLE STRINGHE IN MODO CHE i NON ESCE FUORI DAL RANGE DI UNA DELLE 2
                        a = items[c].charAt(i);    a = cc.ritornoCarattere(a);
                        b = s.charAt(i);                b = cc.ritornoCarattere(b);//LE CHAR DIVENTANO IN CORSIVO
                        if (a == b)
                            al.add(items[c]);
                    }
                }
                array = new String[al.size()];
                for(int t = 0; t < array.length; t ++){
                    array[t] = al.get(t);
                }//PONGO L'ARRAY LIST AD ARRAY, COSI' IL 2 ELEMENTO LO RICERCHERA' TRA QUELLI POSITIVI ALLA 1 RICERCA
                al = new ArrayList<String>();// E RIAZZERO LA L'ARRAY LIST
                
                i++;
                if (s3 == i)
                    break;
            }
        }
        
        public String[] ritornaLista(){
            
            return array;//DA QUI PRENDO I RISULTATI E LI AGGIUNGO ALLA LISTA
        }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Detto onestamente .... non ho capito (quasi) nulla e il tuo codice è talmente astruso che mi è già passata la voglia di leggerlo ... E poi che vuol dire "trasformare le lettere in corsivo" ???

    Proviamo a dirlo in altro modo? Hai una lista (in senso generale, che sia array, List .... non è molto importante) di stringhe e vuoi cercare tutte quelle che iniziano con una certa parola? Ma la parola è da ricercare "esatta" o ti basta che sia l'inizio di una stringa?

    Detto in altro modo, una stringa nella lista è "pinco palla". Se tu cerchi l'iniziale "pin" vuoi prendere quella stringa "pinco palla" oppure no?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    si deve essere l'inizio della stringa, mi basta questo, ora non importa che risolvi il mio algoritmo, se magari riesci a trovare un altro algoritmo che permetta di fare questo. per quando riguarda le lettere in corsivo mi spiego meglio, il mio algoritmo trasforma tutte le lettere in corsivo, quindi per esempio uno nella casella di testo scrive CiAo, come output avrò ciao, e questo avviene nell'altra classe chiamata Confronta caratteri che non ho trovato opportuno inserire, ora praticamente utilizzando le variabili char A e B confronto le lettere e quindi le aggiunge nell'array list se sono uguali, non so come altro spiegarmi, grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Scofield095 Visualizza il messaggio
    si deve essere l'inizio della stringa, mi basta questo
    Ok

    Quote Originariamente inviata da Scofield095 Visualizza il messaggio
    il mio algoritmo trasforma tutte le lettere in corsivo, quindi per esempio uno nella casella di testo scrive CiAo, come output avrò ciao
    Questo si chiama "lowercase" .... non "corsivo". E String ha toLowerCase().

    codice:
    public static String[] filtraPerStringaIniziale(String[] items, String iniziale) {
        String inizialeLowerCase = iniziale.toLowerCase();
    
        ArrayList<String> itemsList = new ArrayList<String>();
    
        for (String item : items) {
            if (item.toLowerCase().startsWith(inizialeLowerCase)) {
                itemsList.add(item);
            }
        }
    
        return itemsList.toArray(new String[itemsList.size()]);
    }

    La vedi la differenza in termini di semplicità, linearità e leggibilità?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Questo si chiama "lowercase" .... non "corsivo". E String ha toLowerCase().
    ... o, sevogliamo in Italiano, si chiama "minuscolo".


    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

  6. #6
    E si andbin, Java offre molte funzioni di cui non sono a conoscenza, io ho provato a fare tutto da me, infatti esco fuori di testa ogni volta, grazie delle correzioni

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.