Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Array bidimensinale

  1. #1

    Array bidimensinale

    Ciao a tutti e da pochisssimo che sto cercando di studiare java, mi trovo davanti a un problema su un esercizio:
    L'esercizio richiede:
    Si scriva un programma che crea un array bidimensionale di interi in dimensioni 3 per 3, lo riempe con i valori letti da tastiera e poi stampa le somme per righe e per colonne...

    Io non riesco a capire, o letto sul libro che sto studiando che gli array tipo:
    byte[] b;
    Double[] d;
    Sono detti array semplici o monodimensionali, e quindi non dovrebbero fare al caso mio...

    Invece questi:

    String[][] s;
    int[][][] i;
    Sono detti array multidimensionali, che dovrebbero essere cio che serve a me...(Sempre se non sbaglio).

    Peròse io scrivo questo codice :
    public class ArrayBidimensionale {


    public static void main(String[] args) {

    int[][][] primi = Input.readInt("Digita 3 numeri primi");
    primi = new int[3][][];

    }
    }

    Se scrivo questo codice, Eclipse mi da errore su Input.readInt, e quando lo faccio eseguire mi da questo errore:

    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    Type mismatch: cannot convert from int to int[][][]

    at ArrayBidimensionale.main(ArrayBidimensionale.java: 7)
    Dall'errore capisco che e un problema di conversione, ma non mi è chiaro il perche qualcuno mi può delucidare sul problema ?? magari con qualche esempio? grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    ..bhe, forse è il caso che studi gli array prima di tutto.

    codice:
    // array ad una dimensione
    int array[] = new int[10]; // Array ad una dimensione che può contenere 10 elementi
    codice:
    // array molti-dimensionale, array di array
    int array[][] = new int[10][10]; // Alloca un array multidimensionale (una matrice) di 10x10
    Va da se, che dopo l'esecuzione di questo codice l'array è vuoto! Abbiamo solo allocato memoria per l'array!!

    codice:
    int n = 10,m=10;
    
    int array[][] = new int[n][m];
    // Questi riempiono una matrice
    for(int i=0; i<n; i++) {
      for(int j=0; j<m; j++) {
        array[i][j] = i+j; // Inserisco il valore desiderato
      }
    }
    per riempire un vettore (un array)
    codice:
    // Scanner....
    
    int array[] = new int[10];
    for(int i=0; i<array.length; i++) {
      array[i] = input.nextInt();
    }
    http://it.wikipedia.org/wiki/Array_in_Java

    PS: Ora spengo, indi per cui sino a domani non avrai certamente mie risposte

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    68
    Premetto che emerge molto chiaramente che non hai compreso il concetto di array ed è questo fondamentalmente l'origine del tuo errore. Come hai giustamente pensato per implementare il tuo programma hai bisogno di un array bidimensionale, tuttavia quello che tu invece hai definito è tridimensionale.
    codice:
    //monodimensionale
    int[] mono = {1, 2, 3};
    //bidimensionale
    int[][] bi = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    //tridimensionele
    int[][][] tri = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
    Il primo array qui sopra contiene tre elementi mentre il secondo contiene tre sotto-array i quali a sua volta contengono ognuno tre elementi. Se volessi rappresentare i due array potresti vedere il primo come una singola riga di una tabella, con tre colonne mentre il secondo come una tabella con tre righe e tre colonne.

    Venendo al tuo errore tu associ ad un array tridimensionale un intero, ecco quindi giustificato l'errore di casting. Oltretutto il metodo readInt ritorna un solo intero anche se tu ne scrivessi mille. Una possibile soluzione per riempire l'array potrebbe essere la seguente:
    codice:
    ...
    int[][] ar = new int[3][3];
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++)
            ar[i][j] = Input.readInt();
    }
    ...
    EDIT: Sono stato anticipato mentre scrivevo, ma come puoi notare abbiamo entrambi notato la tua poca conoscenza degli array, pertanto prima di tutto ti consiglio di fare chiarezza in merito.

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.