Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.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
Java 随机数生成问题 ArrayList fil=new ArrayList(); ArrayList lif=新的ArrayList(); int x=0; 长tim=System.currentTimeMillis(); 随机=新随机(tim); 对于(int i=0;i_Java_Android_Arraylist_Indexoutofboundsexception - Fatal编程技术网

Java 随机数生成问题 ArrayList fil=new ArrayList(); ArrayList lif=新的ArrayList(); int x=0; 长tim=System.currentTimeMillis(); 随机=新随机(tim); 对于(int i=0;i

Java 随机数生成问题 ArrayList fil=new ArrayList(); ArrayList lif=新的ArrayList(); int x=0; 长tim=System.currentTimeMillis(); 随机=新随机(tim); 对于(int i=0;i,java,android,arraylist,indexoutofboundsexception,Java,Android,Arraylist,Indexoutofboundsexception,为什么不尝试和方法。为什么不尝试和方法。在重新刷新内容之前,必须预先分配“lif”-ArrayList以保存“fil.size()”元素。在输入for循环之前,请尝试添加“fil.size()”null元素 注意!这是一种非常无效的重新刷新方法,有关更好的方法,请参阅。在重新刷新内容之前,必须预先分配“lif”-ArrayList以保存“fil.size()”元素。在进入for循环之前,请尝试添加“fil.size()”null元素 注意!这是一种非常无效的重新洗牌方法,有关更好的方法,请参阅。

为什么不尝试和方法。

为什么不尝试和方法。

在重新刷新内容之前,必须预先分配“lif”-ArrayList以保存“fil.size()”元素。在输入for循环之前,请尝试添加“fil.size()”null元素

注意!这是一种非常无效的重新刷新方法,有关更好的方法,请参阅。

在重新刷新内容之前,必须预先分配“lif”-ArrayList以保存“fil.size()”元素。在进入for循环之前,请尝试添加“fil.size()”null元素

注意!这是一种非常无效的重新洗牌方法,有关更好的方法,请参阅。

不是更好的选择吗?

不是更好的选择吗

ArrayList <String> fil = new ArrayList<String>(); 
ArrayList <String> lif = new ArrayList<String>();

int x=0;
long tim = System.currentTimeMillis(); 
Random random = new Random(tim); 
for(int i=0;i<fil.size();i++)
{
 x =random.nextInt(fil.size());
         for(int y=0;y<lif.size();y++)
         {
             if(fil.get(x).equals(lif.get(y)))
             {
                 i--;
                 continue;
             }
         }
         System.out.println("Set the value of x"+x);
          lif.add(i, fil.get(x));//array index out of bound exception


     }
一个可能的问题是,如果“i”为0(零)。减量
i--
将“i”设置为-1,这将导致一个异常…
lif.add(i,fil.get(x));

这可能不是答案,但您应该检查i、x和y是否都在ArrayList对象的范围内

一个可能的问题是,如果“i”为0(零)。减量
i--
将“i”设置为-1,这将导致一个异常…
lif.add(i,fil.get(x));


这可能不是答案,但您应该检查i、x和y是否都在ArrayList对象的范围内。

将注释行修改为:

if(fil.get(x).equals(lif.get(y)))
{
    i--;
    continue;
}

这将修复异常。但是,您的算法看起来不是很好。

将注释行修改为:

if(fil.get(x).equals(lif.get(y)))
{
    i--;
    continue;
}

这将修复异常。但是,您的算法看起来不是很好。

将代码更改为此,并检查是否有效

lif.add(fil.get(x));

将代码更改为此,然后检查是否有效

lif.add(fil.get(x));
来自nextInt(int n)文档:返回从该随机数生成器的序列中提取的0(包括)和指定值(排除)之间的伪随机、均匀分布的int值。来自nextInt(int n)文档:返回0(包括)和指定值(排除)之间的伪随机、均匀分布的int值,取自此随机数生成器的序列。非常感谢大家:)我使用了Collections.shuffle方法及其优点:)非常感谢大家:)我使用了Collections.shuffle方法及其优点:)