Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Passaggio di stringhe

  1. #1

    Passaggio di stringhe

    Salve ragazzi,

    ho il seguente problema:


    Voglio salvare i nomi posizione per posizione in una stringa e questo metodo e corretto.
    ora se dichiaro

    String [] s={"prova"};

    e lo passo a set_Name(s,0);
    e lo getto mi da null, come mai?



    codice:
    public void set_Name(String  [] Name,int i){
          
    Name=new String[100];
    
          
          Name2=new String[100];
          
    
    this.Name[i]=Name2[i];
          
    
          
         
          
          
      }  
    
    
    public String get(int i){
    
    return this.Name[i];
    
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Beh per forza, Name2 è un array di 100 stringhe non inizializzate e quindi Name2[i] è null...

    Cosa stai cercando di fare? Perché crei due nuovi array di 100 elementi null?
    Immagino che quello che ti serva è solo this.Name[i] = Name[i]...

    E ancora: ti spiacerebbe usare le convenzioni Java per i nomi?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  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
    codice:
    public void set_Name(String  [] Name,int i){
          
    Name=new String[100];
    
          
          Name2=new String[100];
          
    
    this.Name[i]=Name2[i];
      }
    E poi perché un semplice setter dovrebbe fare tutti 'sti casini con ben 2 array istanziati qui dentro?
    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
    E poi perché un semplice setter dovrebbe fare tutti 'sti casini con ben 2 array istanziati qui dentro?
    Allora scusa ho capito l'errore e che ero stanco, e non mi sono reso conto.

    Quindi

    codice:
    public void  set_nome(String   nome,int i){
    
        
    this.nome=new String[200];
    
    this.nome[i]=nome;
    
    
    
    
    
      }  
    
    public String get_nome(int i){
    
    
    return this.nome[i];
    
    }
    Io praticamente ad esempio nella posizione o ci passo set_nome("1",0) e set_cogome("2",1);

    Ora mi stampa sia nella posizione 0 null e nella posizione 1 "2". invece io penso che dovrebbe stampare 1 e 2 perchè lo salvato in posiizone diverse

  5. #5
    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
    codice:
    public void  set_nome(String   nome,int i){
    this.nome=new String[200];
    
    this.nome[i]=nome;
    }
    Io praticamente ad esempio nella posizione o ci passo set_nome("1",0) e set_cogome("2",1);

    Ora mi stampa sia nella posizione 0 null e nella posizione 1 "2". invece io penso che dovrebbe stampare 1 e 2 perchè lo salvato in posiizone diverse
    Così c'è un problema: riassegni sempre un nuovo array.
    Quando invochi set_cogome("2",1), quello che hai settato in precedenza es. all'indice 0 sparisce (torna a null perché hai istanziato un nuovo array).

    Dubito sia quello che volevi .....


    P.S. scusa ma vedo ora: set_nome e set_cogome sono due metodi distinti o hai sbagliato solo qui il nome? E se sono distinti, operano entrambi su this.nome ?
    Ultima modifica di andbin; 10-06-2014 a 14:11
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Così c'è un problema: riassegni sempre un nuovo array.
    Quando invochi set_cogome("2",1), quello che hai settato in precedenza es. all'indice 0 sparisce (torna a null perché hai istanziato un nuovo array).

    Dubito sia quello che volevi .....


    P.S. scusa ma vedo ora: set_nome e set_cogome sono due metodi distinti o hai sbagliato solo qui il nome? E se sono distinti, operano entrambi su this.nome ?
    no ho sbagliato e solo il nome e non operano su this.nome

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    residenza
    Ancona, Italia
    Messaggi
    16
    codice:
    publicvoid  set_nome(String   nome,int i){
    this.nome=newString[200];
    
    this.nome[i]=nome;
    }
    //basta questo senza il new String[200]
    this.nome[i] = nome;

    Se fai new String[200] sostituisci il riferimento ogni volta che invochi set_nome() ad un array di 200 record VUOTO.

    Quindi o lo istanzi nella classe e poi lo inizializzi nel costruttore, oppure lo inizializzi e lo riempi man mano che esegui i set_nome.
    Magari stai attento ai limiti di indice.

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.