我需要编写将一个数组复制到另一个数组的代码。依次复制所有元素
- 大于0,
- 然后依次所有元素等于0,
- 然后依次所有元素都小于0。
这是我执行此任务的失败尝试:
public static void main(String[] args)
{
int[] arr = new int[100];
Random random = new Random();
for (int i = 0; i < arr.length; i++)
{
int randNum = random.nextInt(600) - 350;
arr[i] = randNum;
}
int[] newArr = new int[100];
for (int i = 0; i < arr.length; i++)
{
if (arr[i] > 0)
{
System.arraycopy(arr, arr[i], newArr, 0, 100);
// arraycopy() Not works!
// I tryed to compare each element in array greater than 0
// and copy it to newArr
}
}
System.out.println(Arrays.toString(newArr));
为什么 System.arraycopy
不工作?
最佳答案
看,您正在逐单元复制数组!所以内部循环应该是这样的:
public static void main(String[] args)
{
int[] arr = new int[100], newArr = new int[100];
int j=0;
Random random = new Random();
for (int i = 0; i < arr.length; i++)
{
int randNum = random.nextInt(600) - 350;
arr[i] = randNum;
}
for (int i = 0; i < arr.length; i++)
{
if (arr[i] > 0){
newArr[j]=arr[i];
j++;
}
}
// and add code for numbers=0 and less than 0. So you should append code:
for (int i = 0; i < arr.length; i++)
{
if (arr[i] == 0){
newArr[j]=arr[i];
j++;
}
}
for (int i = 0; i < arr.length; i++)
{
if (arr[i] < 0){
newArr[j]=arr[i];
j++;
}
}
System.out.println(Arrays.toString(newArr));
}
关于java - 如何使用一些逻辑将一个数组复制到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38115999/