Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [java] indice del vettore

    Come faccio a recuperare l'indice dell'elemento su cui sono posizionata?
    io ho:

    int ind = 0;
    vec = new Vector(20);

    Enumeration vecE = vec.elements();

    while(vecE.hasMoreElements()) {
    ind = vec.indexOf(vecE.nextElement());
    if (vecE.nextElement().equals("T")) {
    ...
    }
    }

    Ma si blocca nel calcolo di "ind", dice Invalid Cursor Position
    :tongue:

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Perchè passi per l'Enumeration?
    Puoi usare un modo più semplice e "veloce": sapendo che gli indici degli array partono da 0, puoi tenerti una variabile contatore:
    codice:
    int contatore = 0;
    
    while (contatore < vec.size()) {
       Object oggetto = vec.elementAt(contatore);
       if (((Eventuale_Casting) oggetto).equals(test)) {
          // fai quello che devi fare
       }
       contatore++; // faccio avanzare il contatore
    }
    In questo modo tu sai sempre che l'oggetto che stai controllando ha come indice 'contatore' all'interno del Vector.
    Per sapere se sei alla fine del Vector basta controllare che questo indice non superi vec.size() (che ti dà proprio il numero di elementi contenuti nel vettore).


    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

    ma....

    il mio caso è un po' più complicato....
    ti posto il codice.... ok?
    :tongue:

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ok... posta il codice.
    "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

  5. #5
    boolean flag = true;
    Enumeration vRuoliE = vRuoli.elements();
    Enumeration vNomiE = vNomi.elements();

    System.err.println("Fatta enumerazione");

    while(vRuoliE.hasMoreElements() && flag) {
    System.err.println("elemento ruoli: " + vRuoliE.nextElement());
    ind = vRuoli.indexOf();
    System.err.println("indice: " + ind);

    if (vRuoliE.nextElement().equals("T")) {
    nomeOK = (String) vNomi.elementAt(ind);
    flag = false;
    } else {
    if (vRuoliE.nextElement().equals("C")) {
    nomeOK = "Più Cointestatari";
    flag = false;
    } else {
    nomeOK = "";
    }
    }
    }


    l'enumerazione è per fare il ciclo....
    :tongue:

  6. #6

    i system.err

    Come system.err.println

    visualizzo:

    Chiavi diverse
    Fatta enumerazione
    elemento ruoli: C
    indice: -1
    nome: Più Cointestatari
    Errore di tipo: 63 > 0 in Filtro Records
    MonitorFilter::ServletException
    MonitorFilter::A web application object caused an exception
    MonitorFilter::javax.servlet.ServletException: java.sql.SQLException: Invalid Cursor position
    at ActionServlet.service(ActionServlet.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)
    at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:193)
    at org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:226)
    at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:213)
    at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:243)
    :tongue:

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Prima di tutto una domanda personale: perchè indirizzi l'output sullo standard error invece dello standard output? Il risultato non cambia, però sono affezionato a System.out.println()..

    Poi il codice. Si può evitare di usare l'Enumeration, usando appunto un contatore di indice:
    codice:
    int contatore = 0;
    boolean flag = true; 
    
    while((contatore < vRuoli.size()) && flag) { 
       System.err.println("elemento ruoli: " + vRuoli.elementAd(contatore)); 
       System.err.println("indice: " + contatore); 
    
       if (((String)vRuoli.elementAt(contatore)).equals("T")) { 
          nomeOK = (String) vNomi.elementAt(contatore); 
          flag = false; 
       } else { 
          if (((String)vRuoli.elementAt(contatore)).equals("C")) { 
             nomeOK = "Più Cointestatari"; 
             flag = false; 
          } else { 
             nomeOK = ""; 
          } 
       } 
    }
    Se non sbaglio, nextElement() si posiziona sul primo elemento (la prima volta), ma la seconda volta che lo chiami, avanza all'elemento successivo. Per questo conviene fare tutto con i Vector senza passare per le Enumeration (hanno sicuramente i loro pregi, non dico di no).

    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

  8. #8

    :-)

    Sai i Java non l'ho mai studiato... faccio quello che mi hanno insegnato... e io tra tutt'e due preferisco gli output su file...
    cmq provo a fare come dici tu...
    Anche a me è venuto il dubbio che con nextElement() andasse avanti... infatti non ero mica tanto convita....
    Lo provo subito così ti faccio sapere.
    :tongue:

  9. #9

    :-( sigh

    mi da lo stesso errore:

    Chiavi diverse
    elemento ruoli: C
    indice: 0
    nome: Più Cointestatari
    Errore di tipo: 63 > 0 in Filtro Records
    Rilascio connessione: 0
    MonitorFilter::ServletException
    MonitorFilter::A web application object caused an exception
    MonitorFilter::javax.servlet.ServletException: java.sql.SQLException: Invalid Cursor position
    :tongue:

  10. #10

    mi sa tanto che....

    l'errore non sta lì!!
    :tongue:

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