Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15

    Confronto elementi di un vector

    Salve,


    sto facendo un'applicazione in Java che mi deve fare il confronto tra gli elementi (di tipo stringa) di un vector per poi prendere delle decisioni.

    la struttura che ho utilizzato è :

    codice:
    int i =0;
    while (i < vettore.size())
    
    if (vettore.firstElement().equals(stringa)) {
    
    OPERAZIONE 0.....
    .....
    }
    else if (stringa.equals(vettore.elementAt(i+1))) {
    FAI OPERAZIONE 1...
    ....
    } else if (stringa.equals(vettore.elementAt(i-1))) {
    FAI OPERAZIONE 2....
    ....
    quando faccio il run però l'operazione 2 non la fa mai.

    sapreste dirmi il motivo?
    Premesso che quando vado a plottare il risultato delle operazioni ho degli errori dovuti alla mancanza del'esecuzione dell'operazione 2.


    grazie

    carmelo

    P.S.:

    Il codice sopra è una minima parte a mo di esempio. Le operazioni da fare sono circa 14 e il vettore da scorrere ha una dimensioni di circa 53000 elementi. Il problema di confrontare l'elemento attuale con quello precedente mi serve per un controllo, in quanto nel risultato è necessario che ci sia un ordine di caratteri ben preciso.
    Carmelo Figura

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    A cosa serve il ciclo while? Non dovevi scrivere direttamente:

    codice:
        if (vettore.firstElement().equals(stringa)) {
            //OPERAZIONE 0.....
        } else if (stringa.equals(vettore.elementAt(1))) {
            //FAI OPERAZIONE 1...
        } else if (stringa.equals(vettore.elementAt(2))) {
            //FAI OPERAZIONE 2...
        }
    P.S. Per Java c'è una sezione del forum apposta.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    il while mi serve perchè ho molte più azioni da fare andando a scorrere il mio vettore, il listato del codice che ho postato è una piccola parte.
    Carmelo Figura

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Caro Carmelo,
    ci sono 2 errori:


    1. far partire i da 0 e poi fare il controllo con l'elemento i-1 (questo ti darà IndexOfBoundException)
    2. il contenuto...cioè è sicuro che ci debba entrare?
    Logga sia stringa sia con cosa fai i confronti
    RTFM Read That F*** Manual!!!

  5. #5
    Originariamente inviato da c0der
    P.S. Per Java c'è una sezione del forum apposta.
    Appunto; sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da MItaly
    Appunto; sposto.
    susu moderatore al lavoro, dopo che hai spostato riunisci
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    707
    @cfigura così come lo hai scritto quel codice non ha senso, è ovvio che non funziona.
    - O usi il while così:
    codice:
    int i =0;
    while (i < vettore.size()) {
       if (stringa.equals(vettore.elementAt(i)))
          // ESEGUO OPERAZIONE "i"
       i++:
    }
    - O togli il while:
    codice:
    if (vettore.firstElement().equals(stringa)) {
        //OPERAZIONE 0.....
    } else if (stringa.equals(vettore.elementAt(1))) {
        //FAI OPERAZIONE 1...
    } else if (stringa.equals(vettore.elementAt(2))) {
        //FAI OPERAZIONE 2...
    }
    Il mix mi pare senza senso. Oppure non hai riportato parti di codice che spieghino la cosa.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    15
    @ valia.

    con il primo if elimino il caso in cui l'elemento da confrontare è il primo.



    adesso ti posto la parte di codice per intero.


    codice:
     int i = 0;
    
                String login = "LOGIN";
                String logout = "LOGOUT";
                String pausa = "PAUSA";
                String rientro = "FINEPAUSA";
                String popup = "Popup App.";
                String reit = "REITEK-LOGOFF";
    
                while (i < giorno.size()) {
    
                    switch (azione.elementAt(i).toString()) {
                        
                        /* Analisi di tutte le transazioni per ogni stato
                         
                         1  STATO LOGIN*/
                        
                        case "LOGIN":
                            // TRANSIZIONE ERRORE 1
                            
                            if (azione.firstElement().equals(login)) {
                                String query = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "','" + ora.elementAt(i) + "','I')";
                                Statement smt = con.createStatement();
                                rsw = smt.execute(query);
                                break;
                            }
                            else if (login.equals(azione.elementAt(i + 1))) {
                                String query = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "','" + ora.elementAt(i) + "','I')";
                                Statement smt = con.createStatement();
                                rsw = smt.execute(query);
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "', DateAdd('s',1,#" + ora.elementAt(i) + "#),'O')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(query1);
    
                                break;
    
                                // TRANSIZIONE ERRORE 2 
                            } else if (rientro.equals(azione.elementAt(i + 1))) {
                                String query = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "','" + ora.elementAt(i) + "','I')";
                                Statement smt = con.createStatement();
                                rsw = smt.execute(query);
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "', DateAdd('s',1,#" + ora.elementAt(i) + "#),'P')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(query1);
    
                                break;
                                
                            } else if (!logout.equals(azione.elementAt(i-1)) && !login.equals(azione.elementAt(i-1)) && !pausa.equals(azione.elementAt(i-1)) && !rientro.equals(azione.elementAt(i-1)) && !popup.equals(azione.elementAt(i-1)) &&! reit.equals(azione.elementAt(i-1))){
                             String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                             + "'" + operatore.get(i) + "', DateAdd('s',1,#" + ora.elementAt(i-1) + "#),'Y')";
                             Statement smt1 = con.createStatement();
                             rsw = smt1.execute(query1);
                          
                             break;
                         
                             }else {
                                String query = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.elementAt(i) + "', "
                                        + "'" + operatore.elementAt(i) + "','" + ora.elementAt(i) + "','I')";
                                Statement smt = con.createStatement();
                                rsw = smt.execute(query);
                                break;
                            }
    
                        /*2 STATO PAUSA */
    
                        case "PAUSA":
                            // TRANSIZIONE ERRORE 3
                            if (pausa.equals(azione.elementAt(i + 1))) {
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "','" + ora.elementAt(i) + "','P')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(query1);
    
                                break;
    
                                // TRANSIZIONE ERRORE 4 
                            } else if (login.equals(azione.elementAt(i + 1))) {
                                String query3 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "','" + ora.elementAt(i) + "','P')";
                                Statement smt3 = con.createStatement();
                                rsw = smt3.execute(query3);
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "', DateAdd('s',1,#" + ora.elementAt(i) + "#),'R')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(query1);
                                String query2 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "', DateAdd('s',2,#" + ora.elementAt(i) + "#),'O')";
                                Statement smt2 = con.createStatement();
                                rsw = smt2.execute(query2);
    
                                break;
    
                                //TRANSIZIONE ERRORE 5
                            } else if (!login.equals(azione.elementAt(i + 1)) && !logout.equals(azione.elementAt(i + 1)) && !pausa.equals(azione.elementAt(i + 1)) && !popup.equals(azione.elementAt(i + 1)) && !rientro.equals(azione.elementAt(i+1))) {
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "','" + ora.elementAt(i) + "','P')";
                                Statement smt2 = con.createStatement();
                                rsw = smt2.execute(query1);
                                String q = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "', DateAdd('s',-1,#" + ora.elementAt(i + 1) + "#),'R')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(q);
    
                                break;
    
                                //TRANSIZIONE ERRORE 6
                            } else if (logout.equals(azione.elementAt(i + 1))) {
                                String query1 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "','" + ora.elementAt(i) + "','P')";
                                Statement smt2 = con.createStatement();
                                rsw = smt2.execute(query1);
                                String q = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "', DateAdd('s',-1,#" + ora.elementAt(i + 1) + "#),'R')";
                                Statement smt1 = con.createStatement();
                                rsw = smt1.execute(q);
    
                                break;
    
                            } else {
                                String query2 = "INSERT into new_stat (data, operatore, ora, flag) values ('" + giorno.get(i) + "', "
                                        + "'" + operatore.get(i) + "','" + ora.get(i) + "','P')";
                                Statement smt2 = con.createStatement();
                                rsw = smt2.execute(query2);
    
                                break;
                            }
    }
    questa è solo una parte, in quanto sono presenti altri 4 case che più o meno fanni gli stessi controlli.
    il risultato in uscita deve seguire il seguente ordine:
    LOGIN - PAUSA - FINEPAUSA - LOGOUT ovviamente tra un login e un logout possono esserci più pause e quindi più rientri. nel campo azione però ci sn anche stringhe diverse da queste, come ad esempio : appuntamento, memo, telefono, e cosi via.
    Carmelo Figura

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    perché l'algoritmo è così contorto?
    chi è giorno? Suppongo sia una struttura dati, poi ti fai uno switch sul primo elemento della collection azione e poi usi i per scorrere azione...ma i non pilota giorno??

    e dove incrementi i?
    RTFM Read That F*** Manual!!!

  10. #10

    Moderazione

    Originariamente inviato da valia
    susu moderatore al lavoro, dopo che hai spostato riunisci
    Non avevo visto; ho rappezzato in qualche maniera, fatemi sapere se ho fatto casino.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.