微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

运行我的程序时是什么导致服务器断开连接?

如何解决运行我的程序时是什么导致服务器断开连接?

我正在为一个班级做一个项目,我需要在其中创建一个类似于游戏战舰的棋盘。我需要用 1 条 5 长船、1 条 4 长船、2 条 3 长船和 1 条 2 长船制作 8 x 8 板。然后我需要打印出来。我有我需要的所有功能并且我的代码已经完成,但是当我按下运行时,它什么也不做,直到我收到消息“服务器已断开连接。按下运行重新连接。”如果这意味着什么,我正在使用 CodeHS。

编辑:我发现错误可能是由我尝试调用 createBoard() 的方式引起的;在第 10 行。我不确定如何正确调用它(我是一个初学者),因为每次我按照我知道的方式尝试时,都会收到一条消息,告诉我我不能调用非 -静态上下文中的静态方法。我什至不知道那是什么意思。

编辑 2:我已将所有方法更改为静态方法,该程序执行与 CodeHS IDE 中相同的操作,并且在调试器中运行但不输出任何内容

这是程序:

    public class Battleship
{
    public static void main(String[] args)
    {
        new Battleship();
    }
    
    public Battleship()
    {
        createBoard();
    }
    
    public int[][] board = new int[8][8];
    
    public void createBoard()
    {
        //fill board with 0's
        for(int i = 0; i < board.length; i++)
        {
            for(int j = 0; j < board[i].length; j++)
            {
                board[i][j] = 0;
            }
        }
         
        //fix loops to exec the right amount of times (FIXED)
        int startX = (int) Math.random() * 8 + 1;
        int startY = (int) Math.random() * 8 + 1;
        // size 5 ship
        while(shipDirection(startX,startY,5) == -1)
        {
            startX = (int) Math.random() * 8 + 1;
            startY = (int) Math.random() * 8 + 1;
        }
        if(shipDirection(startX,5) == 1)
        {
            for(int i = startX; i < startX + 5; i++)
            {
                board[startY][i] = 5;
            }
        }
        if(shipDirection(startX,5) == 2)
        {
            for(int i = startX; i > startX - 5; i--)
            {
                board[startY][i] = 5;
            }
        }
        if(shipDirection(startX,5) == 3)
        {
            for(int i = startY; i < startY + 5; i++)
            {
                board[i][startX] = 5;
            }
        }
        if(shipDirection(startX,5) == 4)
        {
            for(int i = startY; i > startY - 5; i--)
            {
                board[i][startX] = 5;
            }
        }
        
        //size 4 ship
        while(shipDirection(startX,4) == -1)
        {
            startX = (int) Math.random() * 8 + 1;
            startY = (int) Math.random() * 8 + 1;
        }
        if(shipDirection(startX,4) == 1)
        {
            for(int i = startX; i < startX + 4; i++)
            {
                board[startY][i] = 4;
            }
        }
        if(shipDirection(startX,4) == 2)
        {
            for(int i = startX; i > startX - 4; i--)
            {
                board[startY][i] = 4;
            }
        }
        if(shipDirection(startX,4) == 3)
        {
            for(int i = startY; i < startY + 4; i++)
            {
                board[i][startX] = 4;
            }
        }
        if(shipDirection(startX,4) == 4)
        {
            for(int i = startY; i > startY - 4; i--)
            {
                board[i][startX] = 4;
            }
        }
        
        //size 3 ship
        for(int j = 0; j < 2; j++)
        {
            while(shipDirection(startX,3) == -1)
            {
                startX = (int) Math.random() * 8 + 1;
                startY = (int) Math.random() * 8 + 1;
            }
            if(shipDirection(startX,3) == 1)
            {
                for(int i = startX; i < startX + 3; i++)
                {
                    board[startY][i] = 3;
                }
            }
            if(shipDirection(startX,3) == 2)
            {
                for(int i = startX; i > startX - 3; i--)
                {
                    board[startY][i] = 3;
                }
            }
            if(shipDirection(startX,3) == 3)
            {
                for(int i = startY; i < startY + 3; i++)
                {
                    board[i][startX] = 3;
                }
            }
            if(shipDirection(startX,3) == 4)
            {
                for(int i = startY; i > startY - 3; i--)
                {
                    board[i][startX] = 3;
                }
            }
        }
        
        //size 2 ship
        while(shipDirection(startX,2) == -1)
        {
            startX = (int) Math.random() * 8 + 1;
            startY = (int) Math.random() * 8 + 1;
        }
        if(shipDirection(startX,2) == 1)
        {
            for(int i = startX; i < startX + 2; i++)
            {
                board[startY][i] = 2;
            }
        }
        if(shipDirection(startX,2) == 2)
        {
            for(int i = startX; i > startX - 2; i--)
            {
                board[startY][i] = 2;
            }
        }
        if(shipDirection(startX,2) == 3)
        {
            for(int i = startY; i < startY + 2; i++)
            {
                board[i][startX] = 2;
            }
        }
        if(shipDirection(startX,2) == 4)
        {
            for(int i = startY; i > startY - 2; i--)
            {
                board[i][startX] = 2;
            }
        }
            
        //printing the board
        for(int i = 0; i < board.length; i++)
        {
            for(int j = 0; j < board[i].length; j++)
            {
                System.out.print(board[i][j]);
            }
                System.out.println("");
        }
    }
            
    //check for battleship intersection (FIXED)
    public int shipDirection(int x,int y,int size)
    {
        if(x + size <= 8)
        {
            for(int i = x; i < x + size; i++)
            {
                if(board[y][i] != 0)
                {
                    return -1;
                }
            }
            return 1;
        }
        else if(x - size >= 0)
        {
            for(int i = x; i > x - size; i--)
            {
                if(board[y][i] != 0)
                {
                    return -1;
                }
            }
            return 2;
        }
        else if(y + size <= 8)
        {
            for(int i = y; i < y + size; i++)
            {
                if(board[i][x] != 0)
                {
                    return -1;
                }
            }
            return 3;
        }
        else if(y - size >= 0)
        {
            for(int i = y; i > y - size; i--)
            {
                if(board[i][x] != 0)
                {
                    return -1;
                }
            }
            return 4;
        }
        else
        {
            return -1;
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?