Math.random值一直被选中?

时间:2015-06-05 00:21:11

标签: java arrays loops for-loop

好的,基本上,由于某种原因,第一个数组“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;
                }
            }
        }

       }

1 个答案:

答案 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(并在过程中截断)。