Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    13

    problema con array, mi ritorna " [[I@addbf1 "

    Salve ragazzi questo è il primo mex, spero che riuuscirete ad aiutarmi!
    Ho creato qesto programmino per generare una matrice casuale, date le dimensioni. La compilazione è ok ma al momento dell'esecuzione mi ritorna " [[I@addbf1 "
    Penso che questo sia lo spazio occupato dall'array bidimensionale nella ram.... Come fare per far comparire i valori casuali della matrice?? Grazie!


    import java.util.Random;

    public class ProvaMatriceRandom {
    public static int[][] matriceCasuale (int righe, int colonne) {
    Random random= new Random ();
    random.nextInt();
    int[][]a=new int[righe][colonne];
    for (int i=0; i<a.length; i++)
    for (int j=0; j<a[0].length; j++)
    a[i][j]=random.nextInt();
    return a;
    }

    public static void main (String []args) {
    int righe=3;
    int colonne=2;

    System.out.println ("matrice casuale: " + matriceCasuale(3,2));
    }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: problema con array, mi ritorna " [[I@addbf1 "

    Originariamente inviato da MikGio90
    ma al momento dell'esecuzione mi ritorna " [[I@addbf1 "
    Solita questione: gli oggetti array non ridefiniscono il toString() .... che rimane quindi quello implementato in Object che fornisce un String con quel formato (non potendo/sapendo fare altro ...).

    Originariamente inviato da MikGio90
    Come fare per far comparire i valori casuali della matrice??
    Cicli for per scansione sulla matrice e stampa dei valori.
    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
    Mar 2010
    Messaggi
    13
    ma i cicli for dovrei rifarli nel main? richiamando il metodo matriceCasuale non dovrebbe rifarli in automatico? (poichè già sono presenti lì....)

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MikGio90
    ma i cicli for dovrei rifarli nel main?
    Sì. Un conto sono i cicli in matriceCasuale() dove deve solo costruire la matrice (e non dovrebbe stampare alcunché). Un altro conto è stampare la matrice, che puoi farlo nel main() o con un metodo apposito es. stampaMatrice() che richiami da dove vuoi.
    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
    Mar 2010
    Messaggi
    13
    ah ok...
    e potresti farmi vedere esplicitamente cos'è che dovrei modificare?

    però ora ho un altro dubbio... perchè quest'altro programma funziona senza problemi?

    public class EsercitazioneArray {

    public static void stampaInteri (int[]a) {
    int l=a.length;
    System.out.print ("{");
    for (int i=0; i<l; i++) {
    if (i==a.length-1)
    System.out.print (a[i]);
    else
    System.out.print (a[i] + "," + "");
    }
    System.out.println ("}");
    }

    public static void main (String [] args) {
    System.out.println () ;
    int[] a = {10,20,35,40,50,60,17,85};
    stampaInteri(a);
    System.out.println () ;
    }
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MikGio90
    e potresti farmi vedere esplicitamente cos'è che dovrei modificare?
    Fai i cicli for per scansionare la matrice per righe/colonne e stampa ogni singolo elemento.
    Se farlo direttamente nel main() o in un altro metodo es. stampaMatrice() è un altro discorso ... solo questione di praticità/riutilizzo.

    Originariamente inviato da MikGio90
    però ora ho un altro dubbio... perchè quest'altro programma funziona senza problemi?
    Hai fatto un for che scansiona l'array e stampa i singoli elementi.
    Che tra l'altro si potrebbe anche semplificare un pochino.
    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
    Mar 2010
    Messaggi
    13
    Tipo questo va bene?


    public static String stampaMatrice (int[][]a) {
    String str = ("{");
    for (int i=0; i < a.length; i++)
    for (int j=0; j<a[0].length; j++)
    str = str + a[i][j] + ", ";
    return str + ("}");
    }

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    13
    penso di aver risolto.....


    import java.util.Random;

    public class ProvaMatriceRandom {
    public static int[][] matriceCasuale (int righe, int colonne) {
    Random random= new Random ();
    random.nextInt();
    int[][]a=new int[righe][colonne];
    for (int i=0; i<a.length; i++)
    for (int j=0; j<a[0].length; j++)
    a[i][j]=random.nextInt();
    return a;
    }

    public static String stringaMatrice (int[][]a) {
    String str = ("{");
    for (int i=0; i < a.length; i++)
    for (int j=0; j<a[0].length; j++)
    str = str + a[i][j] + ", ";
    return str + ("}");
    }

    public static void main (String []args) {
    int righe=3;
    int colonne=2;

    int[][]a = matriceCasuale(righe,colonne);
    System.out.println ("matrice casuale: " + stringaMatrice(a));


    }
    }




    ....pensi vada bene o si può semplificare qualcosina?

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da MikGio90
    codice:
    	public static String stringaMatrice (int[][]a) {
    		String str = ("{");
    		for (int i=0; i < a.length; i++) 
    			for (int j=0; j<a[0].length; j++)
    				str = str + a[i ][j] + ", ";
    		return str + ("}");
    	}
    ....pensi vada bene o si può semplificare qualcosina?
    Non proprio bene.

    Innanzitutto tu restituisci una stringa in cui "sembra" un array lineare. Visto che è una matrice, dovresti evidenziare nella stringa le sottomatrici.
    Nel ciclo interno usi come lunghezza sempre a[0].length, ovvero della prima riga.
    In Java tecnicamente si possono fare gli array "jagged", dove in ogni riga c'è un numero diverso di colonne. Quindi tecnicamente sarebbe comunque meglio prendere la lunghezza di quella riga i-esima, non sempre della 0.

    E come appunti: mettere le stringhe tra ( ) non serve e invece di fare la concatenazione delle stringhe si potrebbe usare un StringBuffer/StringBuilder, di cui alla fine restituisci il risultato del suo toString().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    13
    [QUOTE]Originariamente inviato da andbin

    Innanzitutto tu restituisci una stringa in cui "sembra" un array lineare. Visto che è una matrice, dovresti evidenziare nella stringa le sottomatrici.

    come si fa ad evidenziare le sottomatrici?


    Cmq adesso mi tornano mooolte cose, i programmi iniziano a girare tutti...
    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.