Pages: [1]   Go Down
Print
Author Topic: Esercizio 2 del prof  (Read 1662 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
milos224
Forumista
***
Offline Offline

Posts: 830


« on: 08-02-2011, 11:54:07 »

Sto impazzendo su questo esercizio, questione di principio..perchè continua darmi errore? La logica dovrebbe essere corretta.. http://paste.ubuntu.com/564348/
« Last Edit: 08-02-2011, 11:56:04 by milos224 » Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #1 on: 08-02-2011, 12:38:10 »

Ciao,
non ho controllato la logica del codice, però tutte le stringhe restituite dal metodo cominciano con null, semplicemente perchè non le inizializzi.
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
milos224
Forumista
***
Offline Offline

Posts: 830


« Reply #2 on: 08-02-2011, 12:45:12 »

come risultato a me da [Ljava.lang.String;@71f6f0bf 
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #3 on: 08-02-2011, 13:11:31 »

come risultato a me da [Ljava.lang.String;@71f6f0bf  

Posta il codice completo please  
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
milos224
Forumista
***
Offline Offline

Posts: 830


« Reply #4 on: 08-02-2011, 16:02:31 »

http://paste.ubuntu.com/564490/  con un array di prova nel main
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #5 on: 08-02-2011, 17:17:51 »

Certo, il metodo restituisce un array di String non una String!!

Devi scrivere qualcosa del tipo:
Code:
public static void main(String[] args) {

      String A[]={"ciaomamma","ciaopapa","ciao"};
     
     for (int i=0;i<A.length;i++) System.out.println(A[i] + "\t");
     }

Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
milos224
Forumista
***
Offline Offline

Posts: 830


« Reply #6 on: 08-02-2011, 17:33:17 »

ma scusa l'output non deve essere un array di stringhe?
Scrivere un metodo che prenda come parametri formali un array di stringhe A e restituisca in output un array B di m stringhe, dove:
•   m è la lunghezza media delle stringhe in A di lunghezza maggiore di 5, e
•   la i-esima stringa di B è ottenuta concatenando (m*i) asterischi.

Non sto capendo..
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #7 on: 08-02-2011, 17:43:32 »

intanto il metodo che hai scritto sostanzialmente fa quello che deve fare ma potresti perfezionarlo proprio a livello di codice senza utilizzare la variabile val, ad esempio, e senza quei if.
lasciando perdere questo ciò che nn ti fa funzionare il programma è come richiami il metodo. vorresti stampare un array di stringhe. x far ciò devi fare un main di questo tipo:
Code:
public static void main(String[] args) {

      String A[]={"ciaomamma","ciaopapa","ciao"};        //notazione C, utilizzare quella java :-)
    
     for (int i=0;i<A.length;i++) System.out.println(A[i] + "\t");

     String[] Nuovo=Metodo2(A);
      for (int i=0;i<A.length;i++) System.out.println(Nuovo[i] + "\t");
     }
Logged

"Che la Forza sia con Te"
milos224
Forumista
***
Offline Offline

Posts: 830


« Reply #8 on: 09-02-2011, 10:41:50 »

ok così funziona grazie, ma non ho capito cosa fai..
praticamente copi il metodo in un array di stringhe,e poi lo stampi?
Logged
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #9 on: 09-02-2011, 10:53:06 »

ok così funziona grazie, ma non ho capito cosa fai..
praticamente copi il metodo in un array di stringhe,e poi lo stampi?

No! Il metodo restituisce un array di stringhe e non fa altro che assegnare la reference di tale array ad un altro array in modo da stamparlo...
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #10 on: 09-02-2011, 12:25:36 »

String[] Nuovo=Metodo2(A);
      for (int i=0;i<A.length;i++

per distrazione qua ho messo A.length, mentre invece è Nuovo.length . se ti ha funzionato hai avuto fortuna in cui la lunghezza media delle stringhe veniva proprio quanto la lungheza di A.
si poi ha detto perfettamente david, siccome il metodo torna un array di stringhe, hai bisogno di dichiarare un array nel main, e di farlo puntare allo stesso array creato nel metodo.xkè ricordati che i dati di tipo primitivo vengono passati per valore mentre i dati non primitivi vengono passati per indirizzo, quindi quando viene creato hai bisogno un array di appoggio nel main...
Logged

"Che la Forza sia con Te"
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #11 on: 09-02-2011, 14:23:21 »

String[] Nuovo=Metodo2(A);
      for (int i=0;i<A.length;i++

per distrazione qua ho messo A.length, mentre invece è Nuovo.length . se ti ha funzionato hai avuto fortuna in cui la lunghezza media delle stringhe veniva proprio quanto la lungheza di A.
si poi ha detto perfettamente david, siccome il metodo torna un array di stringhe, hai bisogno di dichiarare un array nel main, e di farlo puntare allo stesso array creato nel metodo.xkè ricordati che i dati di tipo primitivo vengono passati per valore mentre i dati non primitivi vengono passati per indirizzo, quindi quando viene creato hai bisogno un array di appoggio nel main...

In realtà, se proprio vogliamo essere pignoli (alla reverse...  ), non è proprio necessario dichiarare un array di appoggio nel main. Per assurdo, è possibile fare anche la seguente:

Code:
   public static void main (String [] args)
    {
      String [] D = {"aereo","hotel","pesato","zorro"};
      
      for (int i=0;i<Metodo2(D).length;i++)
             System.out.println(Metodo2(D)[i] + "\t");
    }
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #12 on: 09-02-2011, 14:43:17 »

ma questa operazione non è "pesante"? cioè richiamarlo tante volte nn significa fare ripetutamente le operazioni del metodo?ora col java nn so cosa succede esattamente in memoria, ma immagino come se ogni volta che chiami quel metodo quell'array viene diciamo "sovrascritto"...
Logged

"Che la Forza sia con Te"
KingDavid
Forumista
***
Offline Offline

Posts: 788


Alla fine [...] tutta la realtà è binaria.


« Reply #13 on: 09-02-2011, 15:50:51 »

Certo, infatti io ho detto che è possibile farlo non che è conveniente. Quella è tutta un'altra storia...  ok
Logged

Basti pensare che un ipotetico quadrato di specchi, lungo 200 chilometri per ogni lato, potrebbe produrre tutta l'energia necessaria all'intero pianeta.
(Carlo Rubbia)
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #14 on: 09-02-2011, 15:57:18 »

 yoh bene risolto il mistero xD
Logged

"Che la Forza sia con Te"
Pages: [1]   Go Up
Print
Jump to: