this.blockHeights = new int[] { 1, 2, 1, 1, 2, 1, 2, 1 };
int x = blockHeights.length/2;
int leftSource[] = new int[x];
System.out.println(x);
int j = 0;
for (int i = 0; i < x; i++)
{
if ((blockHeights[i]%2 == 0) || (i == 0)) //odd-elements
{
leftSource[i] = blockHeights[i];
}
}
for (int i = 0; i < leftSource.length; i++)
{
System.out.println(leftSource[i]);
}
输出为1,2,0,0。而我的目标是从数组blockHeights打印出第1,第3,第5和第7个元素并将其放入新数组leftSource。
答案 0 :(得分:0)
添加i%2 != 0
获得的元素,新数组只应具有原始数组的一半大小。你也必须运行循环,直到第一个数组结束,而不仅仅是一半。
请尝试以下代码。
this.blockHeights = new int[] { 1, 2, 1, 1, 2, 1, 2, 1 };
int x = blockHeights.length/2;
int leftSource[] = new int[x];
System.out.println(x);
int j = 0;
for (int i = 0; i < blockHeights.length; i++) //changed this line
{
if (i%2 != 0) //odd-elements //changed this line
{
leftSource[j] = blockHeights[i]; //changed this line
j++;//changed this line
}
}
for (int i = 0; i < leftSource.length; i++)
{
System.out.println(leftSource[i]);
}
答案 1 :(得分:0)
在int x = blockHeights.length / 2;
中,您将x
设置为blockHeights
长度的一半,因此在第一个for
循环中,您将迭代数组的左半部分。变化
for (int i = 0; i < x; i++)
到
for (int i = 0; i < blockHeights.length; i++)
您还需要检查i
是奇数还是偶数,而不是数组中的元素
for (int i = 0; i < lockHeights.length; i++) {
if (i % 2 == 0)
{
leftSource[i / 2] = blockHeights[i];
}
}
答案 2 :(得分:0)
如果你想将奇数索引成员复制到一个新数组(无论它们的值如何),就像你说的那样 - 第1,第3,第5和第7 - 那么试试这个:
this.blockHeights = new int[] { 1, 2, 1, 1, 2, 1, 2, 1 };
int x = blockHeights.length/2;
int leftSource[] = new int[x];
System.out.println(x);
//go over the larger array and skip by 2
for (int i = 0; i < blockHeights.length; i=i+2)
{
leftSource[i/2] = blockHeights[i];
}
for (int i = 0; i < leftSource.length; i++)
{
System.out.println(leftSource[i]);
}
答案 3 :(得分:0)
变化
if ((blockHeights[i]%2 == 0) || (i == 0)) //odd-elements
到
if(i%2 != 0) //odd-elements
或者您可以更改for循环
for (int i = 1; i < x; i+=2)
{
leftSource[i] = blockHeights[i];
}
答案 4 :(得分:-1)
你看看元素的值,检查它是否奇怪,但它是否是你想要的奇数位置,所以你需要存储在leftSource中的下列位置,但是得到的值超过2
for (int i = 0; i < x; i++)
leftSource[i] = blockHeights[i * 2];
//1 1 2 2
打印数组的便捷方法是:System.out.println(Arrays.toString(leftSource)); //[1,1,2,2]
如果您执行for (int i = 0; i < x; i = i + 2)
,您将获得良好的价值,但只有第一和第三,并且有空位