Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] I miei primi errori stupidi.

    Sto cominciando un piccolo grande progetto in Java, conosco il C ed i fondamenti della programmazione ad oggetti, ma già ancora prima di toccare swing mi sono interrotto.

    L'idea per ora è quella di creare una "mappa" 2D.

    Per ora ho la classe MapTile, così definita:

    codice:
    package life;
    public class MapTile {
        int id;
    }
    Poi la classe Map, una semplice matrice di MapTile:

    codice:
    package life;
    public class Map {
        MapTile map[][]= new MapTile[10][10];
    }
    Infine il main:

    codice:
    package life;
    public class Main {
        public static void main(String[] args) {
            Map mappa= new Map();
            mappa.map[0][0].id=1; ---> "Exception in thread "main" java.lang.NullPointerException"
        }
    }
    Praticamente non istanzia i singoli MapTile, perché pare che gli "int id" non esistano proprio.
    Credo che l'errore sia banale, ma non riesco veramente a capire quale sia.
    Se Map è una semplice matrice di interi, tutto funziona, come complico le cose facendola diventare una matrice di MapTile, succede questo.


    Grazie per un eventuale supporto, cercherò di mantenere vivo questo thread nel caso dovessi incappare in altre cose del genere e magari invito chi è nella mia stessa situazione ad usarlo, in modo da concentrare problemi semplici, ma difficilmente risolvibili con il "Search", in un unico thread.

  2. #2
    codice:
    public class Map {
        MapTile map[][]= new MapTile[10][10];
    }
    Non istanzi gli oggetti MapTile! La matrice è praticamente vuota.

    Inoltre
    codice:
    public class MapTile {     
    int id; }
    Non ha un construttore, che consenta eventualmente di specificare un valore per il campo id dall'esterno.
    Se non vuoi far comunicare le istanze di MapTitle con l'esterno allora l'inizializzazione di id è necessaria altrimenti ti verrebbe sollevata comunque l'eccezione.

  3. #3
    Originariamente inviato da VincenzoTheBest
    codice:
    public class Map {
        MapTile map[][]= new MapTile[10][10];
    }
    Non istanzi gli oggetti MapTile! La matrice è praticamente vuota.

    Inoltre
    codice:
    public class MapTile {     
    int id; }
    Non ha un construttore, che consenta eventualmente di specificare un valore per il campo id dall'esterno.
    Se non vuoi far comunicare le istanze di MapTitle con l'esterno allora l'inizializzazione di id è necessaria altrimenti ti verrebbe sollevata comunque l'eccezione.
    Sapevo che era una cosa stupida.
    Grazie.

    codice:
    package life;
    public class Map {
        MapTile map[][]= new MapTile[10][10];
        public  Map()
        {
            int x,y;
            for (x=0;x<10;x++)
            {
                for (y=0;y<10;y++)
                {
                    map[x][y]=new MapTile();
                    map[x][y].id=0;
                }
            }
        }
    }

    L'inizializzazione dei MapTile l'ho fatta fare a Map e c'è una modifica nel main solo per debug per vedere se appunto era accessibile, poi farò anche il suo costruttore. =D

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.