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

    Passaggio di Stringhe tramite ereditarietà

    Allora ragazzi ho risolto il dubbio per quanto riguarda l'eriditarietà.

    Ora in questa classe ho il seguente metodo:

    codice:
     public String Nome_Person(String Nometabella){
            
    
               int conta;
               
            try{
           //STEP 2: Register JDBC driver
           Class.forName("com.mysql.jdbc.Driver");
    
           //STEP 3: Open a connection
           System.out.println("Connecting to database...");
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root","");
    
           //STEP 4: Execute a query
           System.out.println("Creating database...");
           stmt = conn.createStatement();
          
          
          String sql = "USE STUDENTS;";
                
          stmt.executeUpdate(sql);
          
                    
    
    String queryfinal="SELECT* FROM ";
    
    String querytabella=queryfinal.concat(Nometabella).concat(";");
    
    
    System.out.println(""+querytabella);
    
    ResultSet  rs = stmt.executeQuery(querytabella);
    
    
    conta=this.query3(Nometabella);
    
    while (rs.next()) {
    
    
              Nome2=rs.getString("Nome");
              Cognome2=rs.getString("Cognome");
              
              
             
             
       
       pers=new Person(Nome2,Cognome2);
       
       pers.setNome(Nome2);
       pers.setCognome(Cognome2);
       
       
           Nomeperson=new String[conta];
    
           
           
           for(int i=0;i<conta;i++){
               
           Nomeperson[i]=pers.getNome();
             
    System.out.println("Nome persona"+Nomeperson[i]);
               
               
               
               
               
           }     
           
           
            
            
               
                
                
                
            
            
              
              
              
    
             
    
    
    
               
        
            
              
              
            
                  
              
         
             
             
             
         
    
    
     
              
    
    
    
    
    
    
             
              
              
              
           
         
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    
        
        
        
              
              
    
             
         
    
    //Create and set up the window.
             
        
                    
                    
                    
    
                    
                    
                    
                    
          
    
    
    
    
    
    
    
    
          
         
    
       
         System.out.println("Database created successfully...");
       }catch(SQLException se){
          //Handle errors for JDBC
          se.printStackTrace();
       }catch(Exception e){
          //Handle errors for Class.forName
          e.printStackTrace();
       }finally{
          //finally block used to close resources
          try{
             if(stmt!=null)
                stmt.close();
          }catch(SQLException se2){
          }// nothing we can do
          
         
       }//end try
       System.out.println("Goodbye!");  
        
    
     String [] Nome;
               
     Nome=new String[this.conta];
     
       for(int k=0;k<this.conta;k++){
               Nome[k]= Nomeperson[k];
       }
       
       
       return (Nome[1]);
       
       
       
       
           }
    Ora io voglio che ritorno non a un singolo valore ma a tutti i valori.

    Ossia voglio passato al return Nome[0],Nome[1],Nome[2] fino a quanto arriva a conta-1. In modo tale che quando lo estendo questa classe in un altra classe mi posso prendere tutti i Nomi posizione per posizione

    Si può fare e come?

  2. #2

    Moderazione

    Le discussioni relative a Java non sono trattate qui, ma nell'apposita sottosezione.

    Provvedo a spostare il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    Ora io voglio che ritorno non a un singolo valore ma a tutti i valori.
    Si può fare e come?
    Tecnicamente basta che il metodo abbia tipo di ritorno String[] e tu fai un return di un oggetto String[] popolato con i dati. Puoi farlo anche con un List<String>, naturalmente.

    P.S. questi sono concetti super-basilari ... che dovresti già conoscere
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Tecnicamente basta che il metodo abbia tipo di ritorno String[] e tu fai un return di un oggetto String[] popolato con i dati. Puoi farlo anche con un List<String>, naturalmente.

    P.S. questi sono concetti super-basilari ... che dovresti già conoscere
    Allora già avevo fatto la prova con il metodo con String [],

    codice:
    for(int i=0;i<conta;i++){
               
           Nomeperson[i]=pers.getNome();
             
    System.out.println("Nome persona"+Nomeperson[i]);
               
           }
    facendo in questo modo i nomi delle persone vengono caricati correttamente. Ora
    il problema e che facendo return Nomeperson mi ritorna a nessun nome, come mai?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Quote Originariamente inviata da signfra Visualizza il messaggio
    Ora il problema e che facendo return Nomeperson mi ritorna a nessun nome, come mai?
    Eh... dovresti far vedere la parte di codice relativa a questo passaggio:

    1) Il metodo completo di return
    2) L'invocazione del metodo
    3) L'uso del valore di ritorno

    Hai solo postato una parte minimale del codice, che non ci fa capire né se hai correttamente impostato l'istruzione return nel metodo, né il modo in cui invochi il metodo, né il modo in cui usi il risultato dell'invocazione...


    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
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    il problema e che facendo return Nomeperson mi ritorna a nessun nome, come mai?
    Questo di seguito, pur abbozzato e ovviamente incompleto, è strutturalmente e logicamente corretto:

    codice:
    public String[] Nome_Person(String Nometabella) {
        //......
    
        int conta = //......
    
        String[] Nomeperson = new String[conta];
        int indice = 0;
    
        while (rs.next()) {
            //.......
    
            Person pers = new Person(.............);
    
            Nomeperson[indice] = pers.getNome();
            indice++;
        }
    
        //......
    
        return Nomeperson;
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Eh... dovresti far vedere la parte di codice relativa a questo passaggio:

    1) Il metodo completo di return
    2) L'invocazione del metodo
    3) L'uso del valore di ritorno

    Hai solo postato una parte minimale del codice, che non ci fa capire né se hai correttamente impostato l'istruzione return nel metodo, né il modo in cui invochi il metodo, né il modo in cui usi il risultato dell'invocazione...


    Ciao.
    codice:
    public String [] Nome_Person(String Nometabella){
       int conta;
              
       try{
          //STEP 2: Register JDBC driver
          Class.forName("com.mysql.jdbc.Driver");
    
          //STEP 3: Open a connection
          System.out.println("Connecting to database...");
          conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root","");
    
          //STEP 4: Execute a query
          System.out.println("Creating database...");
          stmt = conn.createStatement();
          
          String sql = "USE STUDENTS;";
                
          stmt.executeUpdate(sql);
    
          String queryfinal="SELECT* FROM ";
    
          String querytabella=queryfinal.concat(Nometabella).concat(";");
    
          System.out.println(""+querytabella);
    
          ResultSet  rs = stmt.executeQuery(querytabella);
    
          conta=this.query3(Nometabella);
    
          Nomeperson=new String[conta];
    
          ArrayList <String> list = new ArrayList <String> ();
            
          while (rs.next()) {
    
             Nome2=rs.getString("Nome");
             Cognome2=rs.getString("Cognome");
      
             pers=new Person(Nome2,Cognome2);
      
             pers.setNome(Nome2);
             pers.setCognome(Cognome2);
      
             Cognomeperson=new String[conta];
        
             for(int i=0;i<conta;i++){
              
                Nomeperson[i]=pers.getNome();
          
    
                System.out.println("Nome persona"+Nomeperson[i]);
             }    
        
          }
    
          //Create and set up the window.
          System.out.println("Database created successfully...");
       }catch(SQLException se){
          //Handle errors for JDBC
          se.printStackTrace();
       }catch(Exception e){
          //Handle errors for Class.forName
          e.printStackTrace();
       }finally{
          //finally block used to close resources
          try{
             if(stmt!=null)
                stmt.close();
          }catch(SQLException se2){
          }// nothing we can do
        
       }//end try
       System.out.println("Goodbye!");  
      
       System.out.println("Nome"+pers.getNome());
      
       return Nomeperson;
      
    }
    Ultima modifica di LeleFT; 29-04-2014 a 17:18 Motivo: Riscritto il codice in modo più leggibile

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Questo è il codice del metodo (non hai ancora mostrato come richiami il metodo e come usi il suo valore di ritorno).
    Noto, comunque, una cosa: Nomeperson non viene dichiarato all'interno del metodo... ne deduco che sia dichiarato a livello di classe... questo rende inutile l'avere un metodo che restituisce un array di String, se questo array di String è già accedibile al di fuori del metodo (non è sbagliato, è solo concettualmente inutile).

    Prova a guardare il codice che ha postato andbin: l'array viene dichiarato (e inizializzato) dentro al metodo e, alla fine, viene restituito.


    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

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.