Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Android Studio Java-如何使用随机数组而不重复?_Java_Arrays_Android Studio_Random_Shuffle - Fatal编程技术网

Android Studio Java-如何使用随机数组而不重复?

Android Studio Java-如何使用随机数组而不重复?,java,arrays,android-studio,random,shuffle,Java,Arrays,Android Studio,Random,Shuffle,我有一个随机消息数组,但我希望它不会拾取已经拾取的消息,然后在拾取所有消息后重置 public void showRandomMsg(){ shuffleMsg(); answer1.setText((messageArray[0].getmAns())); message2.setText((messageArray[0].getmMsg())); toyView1.setImageResource(messageArray[0]

我有一个随机消息数组,但我希望它不会拾取已经拾取的消息,然后在拾取所有消息后重置

public void showRandomMsg(){
        shuffleMsg();
        answer1.setText((messageArray[0].getmAns()));
        message2.setText((messageArray[0].getmMsg()));
        toyView1.setImageResource(messageArray[0].getmImage());
    }

Messages m01 = new Messages(R.drawable.crown1, "Mesage 0 A","Message 0 B");
Messages m02 = new Messages(R.drawable.crown2,"Mesage 1 A","Message 1 B");
Messages m03 = new Messages(R.drawable.crown3,"Mesage 2 A","Message 2 B");
Messages m04 = new Messages(R.drawable.crown4,"Mesage 3 A","Message 3 B");
Messages m05 = new Messages(R.drawable.crown5,"Mesage 4 A","Message 4 B");

Messages [] messageArray=new Messages[]{
        m01, m02, m03, m04, m05
};

public void shuffleMsg(){
    Collections.shuffle(Arrays.asList(messageArray));

}

您可以为删除一条消息的消息获取程序编写逻辑,如果没有可用消息,则重新填充:

List消息列表;
公共无效消息(msg){
if(Objects.isNull(messageList)| | messageList.size()=0){
refillMsg();
}
answer1.setText(messageList.remove(0.getmAns());
message2.setText(messageList.remove(0.getmMsg());
setImageResource(messageList.remove(0.getmImage());
}
public void refillMsg(){
messageList=Arrays.asList(新消息[]{
m01、m02、m03、m04、m05
});
Collections.shuffle(messageList);
}

您可以为删除一条消息的消息获取程序编写逻辑,如果没有可用消息,则重新填充:

List消息列表;
公共无效消息(msg){
if(Objects.isNull(messageList)| | messageList.size()=0){
refillMsg();
}
answer1.setText(messageList.remove(0.getmAns());
message2.setText(messageList.remove(0.getmMsg());
setImageResource(messageList.remove(0.getmImage());
}
public void refillMsg(){
messageList=Arrays.asList(新消息[]{
m01、m02、m03、m04、m05
});
Collections.shuffle(messageList);
}

为了避免重复,您可以将消息数组洗牌,并按顺序处理洗牌后的数组。只有在使用了所有消息后才重新洗牌。为了避免重复,您可以洗牌消息数组并按顺序处理洗牌后的数组。只有当你使用了所有的信息后才可以重新洗牌。嗨,蒂姆,非常感谢,这实际上是一种优雅的方式!嗨,蒂姆,非常感谢,这实际上是一种优雅的方式!