Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52

    record con vettori in java

    Ciao a tutti raga, ho un problema, sto cercando di tradurre un algoritmo da visual basic in java e mi chiedevo se si puo usare un record con vettore in java ho spulciato in giro ma non ho trovato cose concrete, praticamente l'algoritmo in vb6 da tradurre è questo;
    codice:
    Private Type struttura
        nome As String
        minimo As Integer
        massimo As Integer
    End Type
    
    campsoSel() as struttura
    
    campoSel(i).nome = "valori"
    campoSel(i).minimo = 1
    campoSel(i).massimo = 10
    in java ho fatto cosi mi sono creato una classe di nome record:

    codice:
    
    public class Record 
    {
        public String nome;
        public int minimo;
        public int massimo;
        
    }
    poi nel main ma mi servirebbe anche altrove ho fatto cosi:

    codice:
    public class StrutturaRecord {    
        
        public static void main(String[] args) 
        {  
            int n = 2;
            
            Record campoSel[] = new Record[n];
            
            campoSel[0].nome = "ciao";
            campoSel[0].minimo = 1;
            campoSel[0].massimo = 10;
        
                
            
        }
        
    }
    ma mi da questo errore

    Exception in thread "main" java.lang.NullPointerException
    at strutturarecord.StrutturaRecord.main(StrutturaReco rd.java:11)
    Java Result: 1

    cosa sbaglio?
    credete che si puo fare una cosa del genere in java?
    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    codice:
    public class Record 
    {
        public String nome;
        public int minimo;
        public int massimo;
        
    }
    Tecnicamente corretto ma .... i campi è generalmente sempre bene tenerli private e offrire invece i metodi getter/setter public.

    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    codice:
            int n = 2;
            
            Record campoSel[] = new Record[n];
            
            campoSel[0].nome = "ciao";
            campoSel[0].minimo = 1;
            campoSel[0].massimo = 10;
    Quando istanzi un array es. new Record[n] (equivalente qui a new Record[2]), istanzi SOLO l'oggetto dell'array. Non istanzi gli oggetti contenuti (cioè qui NON hai istanziato 2 oggetti Record!). L'array inizialmente contiene solo dei reference null. Spetta a te istanziare ciascun oggetto e assegnarlo a ciascun elemento dell'array.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    quindi in questo esempio come dovrei fare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da NicVeg Visualizza il messaggio
    quindi in questo esempio come dovrei fare?
    L'ho detto prima: istanzi l'array di N elementi Record e poi istanzi tu, esplicitamente, N oggetti Record.

    Record[] campoSel = new Record[2];

    campoSel[0] = new Record();
    // setti i valori nell'oggetto Record campoSel[0]

    campoSel[1] = new Record();
    // ......
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    ho fatto cosi giusto?
    codice:
     
      Record campoSel[] = new Record[10];
            
            campoSel[0] = new Record();
            
            campoSel[0].nome = "attributo";
            campoSel[0].minimo = 1;
            campoSel[0].massimo = 10;
            
        
            System.out.println(campoSel[0].nome);
            System.out.println(campoSel[0].minimo);
            System.out.println(campoSel[0].massimo);
    ovviamente mettero i al posto di 0 per l'iesimo elemento

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Tecnicamente è corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2013
    Messaggi
    52
    ok grazie mille, si so che viola le regole dell'incapsulamento pero mi serve cosi grazie

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.