好的,基本上,由于某种原因,第一个数组“a0”继续在for循环math.random部分中被选中。为什么这样做,我该如何解决? (P.S。,您不必读取每个String数组值)
public class Battleship extends JPanel
{
public static void main(String[] args)
{
String[][] pos = new String[10][10];
...
//we initialize pos here
...
int horcol = 0;
boolean[][] tof = new boolean[10][10];
boolean taken = false;
int vertcol = 0;
for(int k=0; k<=9;k++)
{
for(int l=0;l<=9;l++)
{
if(taken == false)
{
int random = (int)Math.random()*15;
if(random == 1 || random == 2)
tof[k][l] = true;
taken = true;
vertcol = k;
horcol = l;
}
else
{
tof[k][l] = false;
}
}
}
}
答案 0 :(得分:3)
这里的问题非常简单。
问题出在你的学位上!
目前你有这个:
int x = (int)Math.random()*15;
因此,计算机将首先执行Math.random()
,这将返回0到1之间的浮点数(某些内容为0.648294),然后将其转换为int
,它将始终为0,因为它会截断数字,然后乘以15,仍为0.
您需要在Math.random()*15
部分周围添加括号,如下所示:
int x = (int)(Math.random()*15);
首先将随机值乘以15,然后将其转换为int(并在过程中截断)。