如何修复Java中Unresolved compilation problem: 缺失}完成ClassBody错误?
解决Java编译错误:Syntax error, insert "}" to complete ClassBody
错误原因
你的代码中遍历生成实体的for循环缺少闭合花括号,导致编译器无法正确解析类体结构,触发该错误。具体来说:
- 从
for (int i = 0; i < 400; i++) {开始的循环包含两个if分支,但循环结束后未添加},直接执行后续代码,破坏了语法结构。
修复步骤
在第二个if块结束后、MasterRenderer renderer = new MasterRenderer();这一行的上方,添加一个}来闭合整个for循环。
修正后的关键代码片段
if (i % 5 == 0) { float x = random.nextFloat() * 800 - 400; float z = random.nextFloat() * -600; float y = terrain.getHeightOfTerrain(x, z); entities.add(new Entity(bobble, new Vector3f(x, y, z), 0, random.nextFloat() * 360, 0, random.nextFloat() * 0.1f + 0.6f)); x = random.nextFloat() * 800 - 400; z = random.nextFloat() * - 600; y = terrain.getHeightOfTerrain(x, z); entities.add(new Entity(staticModel, new Vector3f(x, y, z), 0, 0, 0, random.nextFloat() * 1 + 4)); } // 新增这一行,闭合for循环 } MasterRenderer renderer = new MasterRenderer();
完整修正后的代码
package engineTester; import java.util.ArrayList; import java.util.List; import java.util.Random; import org.lwjgl.opengl.Display; import org.lwjgl.util.vector.Vector3f; import entities.Camera; import entities.Entity; import entities.Light; import entities.Player; import models.RawModel; import models.TexturedModel; import renderEngine.DisplayManager; import renderEngine.Loader; import renderEngine.MasterRenderer; import renderEngine.OBJLoader; import terrains.Terrain; import textures.ModelTexture; import textures.TerrainTexture; import textures.TerrainTexturePack; public class MainGameLoop { public static void main(String[] args) { DisplayManager.createDisplay(); Loader loader = new Loader(); TerrainTexture backgroundTexture = new TerrainTexture(loader.loadTexture("grassy")); TerrainTexture rTexture = new TerrainTexture(loader.loadTexture("dirt")); TerrainTexture gTexture = new TerrainTexture(loader.loadTexture("pinkFlowers")); TerrainTexture bTexture = new TerrainTexture(loader.loadTexture("path")); TerrainTexturePack texturePack = new TerrainTexturePack(backgroundTexture, rTexture, gTexture, bTexture); TerrainTexture blendMap = new TerrainTexture(loader.loadTexture("blendMap")); RawModel model = OBJLoader.loadObjModel("tree", loader); TexturedModel staticModel = new TexturedModel(model, new ModelTexture( loader.loadTexture("tree"))); TexturedModel grass = new TexturedModel(OBJLoader.loadObjModel("grassModel", loader), new ModelTexture(loader.loadTexture("grassTexture"))); TexturedModel fern = new TexturedModel(OBJLoader.loadObjModel("fern", loader), new ModelTexture(loader.loadTexture("fern"))); TexturedModel bobble = new TexturedModel(OBJLoader.loadObjModel("lowPolyTree", loader), new ModelTexture(loader.loadTexture("lowPolyTree"))); grass.getTexture().setHasTransparency(true); grass.getTexture().setUseFakeLighting(true); fern.getTexture().setHasTransparency(true); Light light = new Light(new Vector3f(20000, 20000, 20000), new Vector3f(1, 1, 1)); Terrain terrain = new Terrain(0, -1, loader, texturePack, blendMap, "heightMap"); List<Entity> entities = new ArrayList<Entity>(); Random random = new Random(676452); for (int i = 0; i < 400; i++) { if (i % 20 == 0) { float x = random.nextFloat() * 800 - 400; float z = random.nextFloat() * -600; float y = terrain.getHeightOfTerrain(x, z); entities.add(new Entity(fern, new Vector3f(x, y, z), 0, random.nextFloat() * 360, 0, 0.9f)); } if (i % 5 == 0) { float x = random.nextFloat() * 800 - 400; float z = random.nextFloat() * -600; float y = terrain.getHeightOfTerrain(x, z); entities.add(new Entity(bobble, new Vector3f(x, y, z), 0, random.nextFloat() * 360, 0, random.nextFloat() * 0.1f + 0.6f)); x = random.nextFloat() * 800 - 400; z = random.nextFloat() * - 600; y = terrain.getHeightOfTerrain(x, z); entities.add(new Entity(staticModel, new Vector3f(x, y, z), 0, 0, 0, random.nextFloat() * 1 + 4)); } // 闭合for循环的花括号 } MasterRenderer renderer = new MasterRenderer(); RawModel bunnyModel = OBJLoader.loadObjModel("person", loader); TexturedModel stanfordBunny = new TexturedModel(bunnyModel, new ModelTexture( loader.loadTexture("playerTexture"))); Player player = new Player(stanfordBunny, new Vector3f(100, 0, -50), 0, 180, 0, 0.6f); Camera camera = new Camera(player); while(!Display.isCloseRequested()) { camera.move(); player.move(terrain); renderer.processEntity(player); renderer.processTerrain(terrain); for(Entity entity:entities){ renderer.processEntity(entity); } renderer.render(light, camera); DisplayManager.updateDisplay(); } renderer.cleanUp(); loader.cleanUp(); DisplayManager.closeDisplay(); } }
内容的提问来源于stack exchange,提问作者idpop48
相关产品推荐
相关产品推荐

