如何解决运行我的程序时是什么导致服务器断开连接?
我正在为一个班级做一个项目,我需要在其中创建一个类似于游戏战舰的棋盘。我需要用 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 举报,一经查实,本站将立刻删除。