Java 我的代码似乎编译正确,但GUI不是';t出现(是的,GUI设计正确)

Java 我的代码似乎编译正确,但GUI不是';t出现(是的,GUI设计正确),java,user-interface,Java,User Interface,我正在为一个APCS最终项目创建一个简单的地牢爬虫,它基于经典AP gridworld程序的GUI。我试图在程序运行时创建随机的岩墙。为了做到这一点,我扩展了摇滚类。当我运行runner时,代码似乎编译正确,但GUI没有出现(java图标出现在我的dock上) 如果需要,以下是gridworld代码: 我百分之百确定这个问题存在于我的RockWalls类中,因为驱动程序在不添加墙的情况下运行良好。问题可能在于我忽略了ActorWorld的.add()方法中的位置(在RockWalls构造函数中

我正在为一个APCS最终项目创建一个简单的地牢爬虫,它基于经典AP gridworld程序的GUI。我试图在程序运行时创建随机的岩墙。为了做到这一点,我扩展了摇滚类。当我运行runner时,代码似乎编译正确,但GUI没有出现(java图标出现在我的dock上)

如果需要,以下是gridworld代码:

我百分之百确定这个问题存在于我的RockWalls类中,因为驱动程序在不添加墙的情况下运行良好。问题可能在于我忽略了ActorWorld的.add()方法中的位置(在RockWalls构造函数中的位置是随机的)

我当前的测试驱动程序

import info.gridworld.actor.ActorWorld;
import info.gridworld.actor.Rock;
import info.gridworld.grid.Location;
import java.util.ArrayList;

public class GameRunner
{
   public static void main(String[] args)
    {
        ActorWorld world = new ActorWorld();
        world.add(new Location(5, 5), new RockWalls(3, world.getGrid()));
        world.show();
    }
}
石墙班

import info.gridworld.actor.Rock;
import info.gridworld.grid.Location;
import info.gridworld.grid.Grid;

public class RockWalls extends Rock {

    RockWalls(int numWalls, Grid gameGrid) {

        for (int i = 0; i < numWalls; i++) {

            int length = (int) (Math.random() * 5) + 1;

            int startX = (int) (Math.random() * 10) + 1;
            int startY = (int) (Math.random() * 10) + 1;

            boolean isVertical = false;
            if (Math.random() > .5) {
                isVertical = true;
            }

            for (int j = 0; j < length && j < 10 && j >= 0; i++) {

                if (isVertical == true && j < 9 && j <= 1
                        && gameGrid.get(new Location(startX + j, startY)) == null
                        && gameGrid.get(new Location(startX - j, startY)) == null) {

                    gameGrid.put(new Location(startX + j, startY), new Rock());
                    gameGrid.put(new Location(startX - j, startY), new Rock());
                } else if (isVertical == false && j < 9 && j <= 1
                        && gameGrid.get(new Location(startX, startY + j)) == null
                        && gameGrid.get(new Location(startX, startY - j)) == null) {

                    gameGrid.put(new Location(startX, startY + j), new Rock());
                    gameGrid.put(new Location(startX, startY - j), new Rock());
                } else {
                    i--;
                }
            }
        }
    }
}
import info.gridworld.actor.Rock;
导入info.gridworld.grid.Location;
导入info.gridworld.grid.grid;
公共级岩墙延伸至岩石{
岩石墙(整数墙,网格游戏网格){
for(int i=0;i.5){
isVertical=真;
}
对于(int j=0;j=0;i++){

如果在内部for循环中(isVertical==true&&j<9&&j,则增加i变量而不是j,这将导致无休止的循环,因为j永远不会改变


顺便说一句,“j<9&&j”是的,GUI设计正确”--您只能在GUI/程序正常工作的情况下说明这一点。在此之前,必须假设此假设是错误的,除非证明是错误的。