Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java7保留和分配随机位置_Java_Arrays_Random_Variable Assignment - Fatal编程技术网

Java7保留和分配随机位置

Java7保留和分配随机位置,java,arrays,random,variable-assignment,Java,Arrays,Random,Variable Assignment,我正在做一个基本的颜色猜测游戏(我的第一个),你可以得到一个十六进制代码,你可以从中选择一些颜色。然而,我遇到了一些问题。我设置它的方法是,我创建一些椭圆,我给它们分配随机颜色(一个有正确的颜色),这一切都很好 问题是,为了避免每次我试图随机生成这些椭圆的位置时答案都放在同一个位置,但我的代码不起作用。代码(我认为会保留点并分配点)没有正确地保留点。我原以为只有在没有采取位置的情况下,它才会进入else语句(takenPos[tempdrandomnum]==false),但它似乎总是进入els

我正在做一个基本的颜色猜测游戏(我的第一个),你可以得到一个十六进制代码,你可以从中选择一些颜色。然而,我遇到了一些问题。我设置它的方法是,我创建一些椭圆,我给它们分配随机颜色(一个有正确的颜色),这一切都很好

问题是,为了避免每次我试图随机生成这些椭圆的位置时答案都放在同一个位置,但我的代码不起作用。代码(我认为会保留点并分配点)没有正确地保留点。我原以为只有在没有采取位置的情况下,它才会进入else语句
(takenPos[tempdrandomnum]==false)
,但它似乎总是进入else语句,即使我的打印结果证实它多次生成同一个点

另一个问题是,如果它输入if语句(现在没有),则会生成一个新值,并获取该值,但仍会使用该值

打印:

否则为假0
否则为假540
否则为假0
否则为假360
否则为假360
否则为假450
否则为假180
否则为假360
ELSE false 540

代码:

我要做的(在向用户显示椭圆之前)是使用当前有效的代码,每次都将答案放在同一位置,然后使用


阅读这个问题,了解如何实现这一点:

可能重复的旁注:在Java中,您应该很少使用数组。你的主要选择应该是
List
,除非你有充分的理由不这么做。也许这并不明显,但这是我的第一个游戏,我对Java非常陌生,所以我不知道如何使用它们。但是谢谢你的反馈。@Raliks我希望我的链接副本能回答你的问题。@durron597,我真的不明白。我应该一个接一个地分配这些值,然后将它们四处移动吗?好的,谢谢!不过,我很想学习,我所做的一切能起作用吗?@Raliks我真的不明白你想用你的算法做什么,对不起:-/
public int randomOvalPos() {
    //An array of booleans to keep track of if the position is taken.
    boolean[] takenPos = new boolean[difficulty];
    //Temporary variable to return if it gets through the if statement.
    int tempRandomNum = randomNum(0 , difficulty - 1);
    //Check if the position is taken (set before return).
    if(takenPos[tempRandomNum]){
        //If the position is taken I want it to get a new random position.
        //The problem is that if this spot is taken as 
        //well I can't just keep redoing it.
        tempRandomNum = randomNum(0, difficulty - 1);
        takenPos[tempRandomNum] = true;
        return tempRandomNum * 90;
    }else{
        //If it isn't taken set the boolean to true and return the value.
        takenPos[tempRandomNum] = true;
        return tempRandomNum * 90;
    }
}