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

    Vedere se due Strnghe sono uguali ????

    Allora ragazzi io ho due Stringhe vekkia e nuova e devo vedere se sono uguali tra di loro..qualora nn l'ho fossero mi devo ricavare la differenza....le stringhe vengono ricavate da una JTextArea(text2) vi passo il codice!

    codice:
     String vekkio="";
    String nuova="";
    String diff="";
    ***
    ***
    
    public void actionPerformed(ActionEvent e) {
    
    if(e.getSource()==modificaArea){
    			this.vekkio=this.text2.getText();
    			this.text2.setEditable(true);	
    		}
    
    
    if(e.getSource()==okArea){
    			this.nuova=this.text2.getText();
    		
    			System.out.println("nuovaStringa"+nuova);
    			System.out.println("vekkiaStringa"+vekkio);
    
    			if(!this.vekkio.equals(this.nuova)){
    	
    			for(int i=0;i<vekkio.length();i++){
    				try{
    				if(vekkio.charAt(i)==nuova.charAt(i)){}
    				else{
    					this.diff+=vekkio.charAt(i);
    					}	
    				}
    				catch(Exception ex){
    					this.diff+=vekkio.charAt(i);
    					}
    			}
    				System.out.println("DIFFERENZA: "+this.diff);
    }
    }
    Allora la console di eclipse mi stampa questo:
    nuovaStringa:
    Penne alla boscaiola,3.5€
    Spaghetti alla pescatora,4.5€
    Spagnetti alla chitarra,4.5€
    Moretti Rossa 0.50,3.0€

    vekkiaStringa:
    Penne alla boscaiola,3.5€
    Spaghetti alla pescatora,4.5€
    Spagnetti alla chitarra,4.5€
    Coca Cola 0.33L,1.5€
    Moretti Rossa 0.50,3.0€

    DIFFERENZA:
    Coca Cola 0.33L,1.5€
    Moretti Rossa 0.50,3.0€

    Ma la differenza è solo Coca Cola 0.33L,1.5€ xke prende anche Moretti Rossa 0.50,3.0€ ???????? .....Spero di essere stata kiara..aiuitatemi x favore...Grazie 1000

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Vedere se due Strnghe sono uguali ????

    Originariamente inviato da nadiiia86
    Ma la differenza è solo Coca Cola 0.33L,1.5€ xke prende anche Moretti Rossa 0.50,3.0€ ????????
    Semplicemente è una questione concettuale a cui evidentemente non hai pensato.
    Tu fai una scansione per la lunghezza di vekkio e usi quindi 1 solo indice. Il tuo codice non è così "smart" da gestire tutti i possibili casi. Che succederebbe se ad esempio nella nuova stringa ci fosse qualcosa in più al fondo rispetto alla vecchia?? Non lo "raggiungeresti" mai visto che usi solo la lunghezza di vekkio!! E non è nemmeno in grado di "risincronizzarsi" per trovare una nuova uguaglianza dopo una differenza. Andando con 1 indice solo, finché è tutto uguale ... ok. Alla prima differenza ... tutto il resto, come nel caso sopra lo vede "diverso".

    Insomma .... è questione di "ragionare" meglio sull'algoritmo. E il try/catch che hai messo ti "salva" perché essendo la nuova stringa più corta viene lanciato ad un certo punto IndexOutOfBoundsException. Ma in ogni caso è solo un barbatrucco inutile poiché è l'intero algoritmo che "fa acqua" a monte a livello concettuale.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok ho capito ke il mio codice non va bene...xò se funzionava nn l'ho inserivo sul forum..vorrei capire cm devo modificarlo ...cmq grazie

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nadiiia86
    vorrei capire cm devo modificarlo
    Beh ma prima dovresti stabilire e magari spiegare qui come vuoi ricercare e trattare le differenze. Non esiste 1 solo modo!!!

    Vuoi tirar fuori solo le differenze carattere per carattere? O riga per riga? Vuoi mostrare solo ciò che è diverso? O anche ciò che manca in una delle due stringhe?

    Ad esempio se la prima riga di 'nuova' contiene "Penne alla boscaiola,3.5€" e la prima riga di 'vekkio' contiene "Panne alla bosciola,3.5€" (manca una 'a' in boscaiola) .... cosa vuoi mostrare?

    Ti è chiara la questione ora?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    sisi ho capito...io devo semplecemente estratte le righe diverse,non devo andare a vedere anche le differenze grammaticali...quello praticamente si riferisce ad un'ordine effettuato da un cameriere per un cliente in un ristorante..nel momento il cui non vuole più una pietanza io devo andare a cancellarla e quindi a modificare il prezzo totale dell'ordine...da qui ne deriva tutto il fatto ke devo vedere la differenza tra nuova e vekkia cioe tra nuovo e vekkio ordine e quindi le pietanze diverse..ok?...spero di si ...grazie

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da nadiiia86
    io devo semplecemente estratte le righe diverse,non devo andare a vedere anche le differenze grammaticali
    Ok, quindi vuoi trovare le righe in più o in meno .... e il resto si deve "risincronizzare" come uguale.
    Ti conviene gestire la cosa "a righe", cioè spezzare l'intero testo in più stringhe distinte ognuna che contiene una riga (nota che questo si può fare in svariati modi).
    E poi fare una analisi un po' "intelligente" sulla sequenza delle righe.

    Blocco di righe 1:
    A
    B
    C
    D
    E

    Blocco di righe 2:
    A
    G
    B
    C
    E

    Potrebbe sembrare che le seconde righe sono "differenti". In realtà è che nel blocco 2 c'è una riga G tra A e B. Quindi devi andare più avanti nel blocco 2 per cercare B. A quel punto il codice dovrebbe dedurre che il "di più" è G e che si "riparte" sincronizzati dalla riga 2 del blocco 1 e dalla riga 3 del blocco 2 (le due B).
    Cosa simile ma al contrario più avanti, dove manca D nel blocco 2.

    Insomma .... è solo da ragionarci un pochino .... non so dirti/postarti l'algoritmo esatto ora ... così su 2 piedi. Ma se ragioni con 2 indici distinti delle righe, lo trovi l'algoritmo!!

    Originariamente inviato da nadiiia86
    ...quello praticamente si riferisce ad un'ordine effettuato da un cameriere per un cliente in un ristorante..nel momento il cui non vuole più una pietanza io devo andare a cancellarla e quindi a modificare il prezzo totale dell'ordine...
    Scusa la domanda ... giusto per curiosità .... ma perché devi farlo così con del testo "puro"??? Non era meglio qualcosa di più "strutturato" (intendo proprio come struttura dati) .... es. un JList o JTable?? Non vuoi una riga? La elimini ... e ovviamente sai già quale è!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.