Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    17

    [Java]Creare una matrice di Oggetti

    Ho bisogno di una struttura dati come una matrice di oggetti ma non riesco a crearla.

    Ho una Oggetto "Cella" in cui ho definito vari metodi e vari argomenti.

    Vorrei creare una matrice di oggetti "Cella" chiamata "Tabella" e indicizzare ogni singolo oggetto tramite gli indici della mastice, io ho provato a fare cosi:

    ......

    Cella Tabella[][]= new SudokuCella[9][9];

    Tabella[5][2].Inizializza(5);

    .......

    dove "Inizializza" è un metodo della Classe "Cella", cosi avrei voluto prendere l'oggetto "Cella" in posizione [5][2] nella "Tabella" e invocare il metodo Inizializza della classe "Cella"

    Ora io pensavo che tutto ciò si potesse fare ma quando vado a mandare in run mi fa il building senza errori ma quando va in run-time mi crea una exception : "java.lang.NullPointerException" nella riga in cui ho: "Tabella[5][2].Inizializza(5);"

    Se uso oggetti "Cella" in modo normale tutto funziona come deve, quindi deduco che il problema sia nella creazione della matrice.

    In cosa sbaglio? Si può fare quello che ho tentato di fare?
    Dei dubbi mi sono venuti, pensando a quale costruttore invocherei per i singoli elementi della matrice che non sono specificati in quella dichiarazione.


    Vi ringrazio per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    posta un po di codice!!! per inizializzare non basta un
    Tabella[5][2]=5;

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    17
    No quello era un esempio di come volevo invocare il metodo "Inizializza" della classe "Cella", cmq ho risolto, sonstato stupido è chiaro, avevo creato una matrice che poteva ospitare oggetti di tipo "Cella" ma non avevo assegnato gli oggetti alle varie posizion della matrice e di che si chiarisce anche il mio dubbio sui costruttori.

    Ho risolto scorrendo la matrice e riempendo ogni posizione con un oggetto "Cella".

  4. #4

    matrice sudoku

    import java.util.*;
    import java.io.*;

    public class Sudoku{
    static int[][] matrice;
    public static void main(String[] args){
    int[][] matrice = leggo();
    checkRiga();
    checkColonna();
    Quadrato();
    }
    private static int [][] leggo(){
    try{
    BufferedReader br = new BufferedReader(new FileReader("sudoku.txt"));
    matrice = new int[9][9];
    String line = br.readLine();
    int riga = 0;
    while (line != null){
    String[] numeri = line.split(" ");
    if (numeri.length != 9)
    System.out.println("errore");
    for(int i=0; i<9;i++){
    matrice[riga][i] = Integer.parseInt(numeri[i]);
    System.out.print(matrice[riga][i]+" ");
    }
    riga++;
    line = br.readLine();
    System.out.println(" ");
    }
    }catch(IOException e){
    System.out.println("Errore" +e);
    }
    return matrice;
    }
    private static boolean checkRiga(){
    for(int i=0; i<9;i++){
    boolean[] flags = new boolean[9];
    for (int j = 0 ; j<9 ; j++){
    int elem = matrice [i][j];
    if (flags[elem-1]){
    System.out.println("Soluzione errata per le righe. Elemento : "+elem+" ripetuto in riga " +(i+1)+" colonna "+(j+1));
    //System.exit(0);
    }
    flags[elem-1] = true;
    }
    }
    return true;
    }
    private static boolean checkColonna(){
    for(int i=0; i<9;i++){
    boolean[] flags = new boolean[9];
    for (int j = 0 ; j<9 ; j++){
    int elem = matrice[j][i];
    if (flags[elem-1]){
    System.out.println("Soluzione errata per le colonne. Elemento : "+elem+" ripetuto in riga " +(j+1)+" colonna "+(i+1));
    //System.exit(0);
    }
    flags[elem-1] = true;
    }
    }
    return true;
    }
    private static boolean checkQuadrato(int m, int k){
    boolean[] flags = new boolean[9];
    //System.out.println("m = " +m + " k = " + k);
    for(int i = 0 ; i<3 ; i++){
    for(int j = 0 ; j<3 ; j++){
    //System.out.println("i = " +i + " j = " + j);
    int elem = matrice[3*m+i][3*k+j];
    if (flags[elem-1]){
    System.out.println("Soluzione errata per i quadrati. Elemento : "+elem+" quadrato :"+ "["+ m+"]"+"[" +k+"]");
    //System.exit(0);
    }
    flags[elem-1] = true;
    }
    }
    return true;}
    private static void Quadrato(){
    for(int m = 0 ; m<3;m++){
    for (int k = 0 ; k<3 ; k++){
    checkQuadrato((m),(k));
    }
    }
    }
    }

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.