#java #2d
#java #2d
Вопрос:
Я получаю данные, возвращаемые как null, все всегда установлено, и это работает до определенного момента…
Я не понимаю, почему я получаю эту проблему… пожалуйста, помогите,
Все должно быть установлено, но я получаю фрагмент, возвращаемый как null
package com.blazingkin.world;
import java.util.HashMap;
import java.util.Map;
import com.blazingkin.atrox.AtroxAdventrum;
public class World {
public World(AtroxAdventrum aa){
chunks = new HashMap<Integer,Map<Integer,Chunk>>();
}
public void setBlock(int x, int y, int newBlock){
}
public void setMetadata(int x, int y, int newMeta){
}
private void setChunk(int x, int y, Chunk c) {
if(chunks.get(x) == null) {
chunks.put(x, new HashMap<Integer, Chunk>());
System.out.println("Created new chunk " x);
}
chunks.get(x).put(y, c);
System.out.println("Set Chunk: " x ", " y);
}
private Chunk getChunk(int x, int y) {
if(chunks.get(x) == null){
Chunk c = new Chunk(y*64, x, y);
setChunk(x, y, c);
return c;
}
return chunks.get(x).get(y);
}
public int getChunkX(int x){
return x/64 - x%64;
}
public int getChunkY(int y){
return y/64 - y%64;
}
public int getBlock(int x, int y){
return getChunk(getChunkX(x), getChunkY(y)).getBlock(xamp;64, y%64);
}
public int getMetadata(int x, int y){
return 1;
}
Map<Integer,Map<Integer,Chunk>> chunks;
}
Сообщение об ошибке:
...
Created new chunk -23
Set Chunk: -23, 16
Exception in thread "main" java.lang.NullPointerException
at com.blazingkin.world.World.getBlock(World.java:49)
at com.blazingkin.render.ScreenOutput.render(ScreenOutput.java:30)
at com.blazingkin.atrox.AtroxAdventrum.draw(AtroxAdventrum.java:34)
at com.blazingkin.atrox.Core.gameLoop(Core.java:60)
at com.blazingkin.atrox.Core.run(Core.java:27)
at com.blazingkin.atrox.AtroxAdventrum.main(AtroxAdventrum.java:14)
Комментарии:
1. Очевидно, что когда вы это делаете
return chunks.get(x).get(y);
,get(y)
возвращается нуль.
Ответ №1:
У вас есть проверка, которая делает это: if(chunks.get(x) == null){
Но вы никогда не проверяете, chunks.get(x).get(y)
и get(y)
равно ли это нулю! :-O
Комментарии:
1. Это потому, что я устанавливаю y, поэтому не имеет значения, имеет ли значение y значение null
2. Но что, если
get(x)
значение не равно null, аget(y)
равно null? Тогда y, который вы пытаетесь получить, никогда не устанавливается. 🙁3. вы правы, у меня было прозрение, и я потерял способность говорить на английском