嗨,所以我是Java的初学者,并不是那么擅长它。但我必须创建一个战舰计划。方向说用户必须输入长度为2,3和4的3艘不同战舰的左上角坐标和方向(水平和垂直)。因此,当用户输入他们希望船的位置的行和列时要进入,我必须替换7 x 7数组中的元素(这是“ - ”),而是将“s”替换为船只。但必须在用户想要的地方进行更改,并根据船舶的长度来更改空间
到目前为止,我有这个,但它不起作用。
System.out.println("What row would you like to place the 2 length ship?");
int row = scan.nextInt();
System.out.println("What column would you like to place the 2 length ship?");
int col = scan.nextInt();
System.out.println("Horizontally or vertically?");
String hv = scan.next();
char [] [] brdState = new char [7][7];
for (int r = 0; r < brdState.length; r++)
{
for ( int c = 0; c < brdState[r].length; c++)
{
brdState [r][c] = '-';
System.out.print(brdState[r][c] + "\t");
}
System.out.println();
if ( hv == "h" || hv == "H");
{
int rl = (row - 1);
for (int c = col; c < col; c++)
{
for ( int r = rl; r <= row; r++)
{
brdState[row][col] = 's';
System.out.print(brdState[r][col] + "\t");
brdState[r][c] = '-';
System.out.println(brdState[r][c] + "\t");
}
}
}
我需要代码处理用户想要长度为2的船的位置,然后是左边的一个元素(水平)或正上方(垂直)。但我无法正确编程。
答案 0 :(得分:1)
您需要更改此行:
if ( hv == "h" || hv == "H");
要
if ( hv.equalsIgnoreCase("H"))
^^^ ^
这意味着,你不需要在if结尾处使用分号,这使得它成为空语句,即无论条件是否满足,{}
之间的代码块将始终执行。同时在比较两个字符串时,您需要使用equals
方法。