java - 数组不复制另一个数组
问题描述
我正在尝试开发一个程序来删除数组中的所有中值(如果它有奇数个元素,则为中间值,如果它有偶数个元素,则为两个中间值),直到只剩下两个元素,元素 [0] 和 [1]。例如,如果用户输入 1, 2, 3, 4, 5,程序将返回 [1, 5]。我记下了我认为在逻辑上可能会有所帮助的内容,但是我的数组 x 没有在 for 循环中复制 myArray 。我不是在寻找完全为我编写代码的人,只是为了指出我错在哪里。这是我的代码:
import java.util.*;
public class Deletion
{
public static void main(String[]args)
{
Scanner kb = new Scanner(System.in);
System.out.println("Please enter the array length:");
int [] myArray = new int[kb.nextInt()];
int [] x = new int[myArray.length - 1];
int index1 = 0;
int index2 = 0;
int index3 = 0;
if(myArray.length < 3)
{
System.out.println("Please make sure array length is greater than two. Run again.");
System.exit(0);
}
else
{
for(int i = 0; i < myArray.length; i++)
{
System.out.println("Please enter a number for position " + i + ":");
myArray[i] = kb.nextInt();
}
for(int i = 0; i < myArray.length; i++)
{
while(myArray.length > 2)
{
if(myArray.length%2 != 0)
{
index1 = (myArray.length/2);
for(int j = 0, r = 0; j < myArray.length; j++)
{
if(j != index1)
{
x[r++] = myArray[j];
myArray = x;
}
}
x = new int[myArray.length - 1];
}
else
{
index2 = (myArray.length/2);
index3 = (myArray.length/2 - 1);
for(int j = 0, r = 0; j < myArray.length; j++)
{
if(j != index2 && j != index3)
{
x[r++] = myArray[j];
myArray = x;
}
}
x = new int[myArray.length - 1];
}
}
}
}
System.out.println(Arrays.toString(myArray));
}
}
解决方案
您必须创建数组并填充它,否则它使用相同的内存地址,因此将不起作用。使用以下内容:
myArray = ArrayUtils.clone(x);
推荐阅读
- sparql - SPARQL 语法更正
- sharepoint - MS Flow SharePoint“授予访问权限”操作因“项目不存在”而失败
- laravel - 向 Laravel 中的所有用户发送每周电子邮件的方法
- java - 如何使用 LatLng 获取起始位置/位置。我确实有一个移动的当前位置/位置
- java - 如何从文本文件中读取单个字符并将它们存储到二维数组中?
- python - 如何显示DataFrame的前N行
- react-native - 未捕获的错误:EXGL:gl.texImage2D() 的像素数据参数无效
- rust - Hello World Rust 程序编译,但执行导致无授权错误
- html - CSS - 在固定的响应式导航菜单中对齐项目
- java - gradle 多模块 kotlin jacoco 覆盖率报告损坏