Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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编号列表有什么问题?_Java_List_Numbers - Fatal编程技术网

什么';这个java编号列表有什么问题?

什么';这个java编号列表有什么问题?,java,list,numbers,Java,List,Numbers,我有以下清单。列表是我使用的其他类所必需的 List<Number> series, series2 列表系列,系列2 序列中充满了120个值,现在我尝试将每秒钟的值放入序列2中,该序列为空 for (int num = 1; num < 121; num = num + 2) { series2.add(num, series.get(num)); } for(int num=1;num

我有以下清单。列表是我使用的其他类所必需的

List<Number> series, series2
列表系列,系列2
序列中充满了120个值,现在我尝试将每秒钟的值放入序列2中,该序列为空

for (int num = 1; num < 121; num = num + 2) {
    series2.add(num, series.get(num));
}
for(int num=1;num<121;num=num+2){
series2.add(num,series.get(num));
}

为什么会崩溃?

没有更多的代码,我不能肯定,但很可能你永远不会创建
series2=newlinkedlist
或类似的东西

我看到的另一个问题是你从1开始。
列表
接口实现通常为0索引,因此您需要

for(int num = 0; num < series.size(); num += 2)
或者:

for(int num = 1; num < 120; num+=2) {
    series2.add(null);
    series2.add(series.get(num));
}
for(int num=1;num<120;num+=2){
序列2.添加(空);
series2.add(series.get(num));
}
无论如何尝试这样添加:
series2.add(num,series.get(num))
可能会失败。根据
列表的文档。添加(int,E)

投掷

IndexOutOfBoundsException-如果索引超出范围(索引<0 | |索引>大小())


因此,您只能使用它来添加到
列表的中间。如果要添加到末尾,必须使用
List.add(E)
。如果要添加到
列表中尚未包含的某个特定索引,则需要添加
null
s(或其他内容),直到达到该索引为止。显然,如果您的
列表
实现不支持
null
s,这是一个问题。

如果您告诉我们您得到的异常情况,会更有帮助


从你告诉我们的情况来看,我猜是因为series2没有初始化。

怎么会崩溃?可能是您引用的get(120)不存在。元素的编号为0-119。

您将抛出一个
索引outofboundsexception
,因为您正在将内容添加到列表末尾以外的系列2中。试着去做

series2.add(series.get(num));

另外,接受glowcoder的建议,用series.size()替换绑定的循环;但是,您的循环实际上不会导致当前的
IndexOutOfBoundsException
,因为通过您的条件的最后一个索引将是119-一个假设120个元素的有效索引。

它“崩溃”?这不是窗户。还请提供stacktrace。@amine OP正在尝试获取每一个其他数字,而不是每一个数字。显然,我们需要OP在此处输入,但从1开始索引很可能是目的。@Rooke是的,这取决于OP尝试执行的操作,但没有明确说明。我试图涵盖最有可能的案例,但我们将看到OP所说的。从1开始是有意的,因为我想有一个新的列表,其中包含您所描述的选项3。包含1,3,5,7,9的新列表。@MaciejEckstein然后您要查找的是(int num=1;num
series2.add(series.get(num));