基本上,我的任务之一是,如果数组是奇数,删除中间元素,或者如果数组是偶数,则删除中间两个元素。
这是我的代码,它可能是草率的,因为这是我的第一年高中Java。
public static void removeMiddle(int[] arr)
{
int size = arr.length;
if(size % 2 ==0)
{
int x = arr.length/2 -1;
for(int i = x; i <= arr.length - 2; i++)
{
arr[i] = arr[i + 2];
}
}
else
{
int z = arr.length/2;
for(int i = z; i < arr.length - 1; i++)
{
arr[i] = arr[i + 1];
}
}
}如果我们被困住了,我会遵循老师给我们的伪码。当我运行它时,它添加了一个额外的元素。
例如,我的数组3、6、-2、8、9在运行后更改为3、6、8、9、9。
有什么建议吗?
发布于 2016-01-07 03:53:03
我不确定我是否正确地理解了你的问题。
例如,如果数组的大小为8(8个元素),那么在方法之后返回的新数组应该返回一个包含6个元素的新数组吗?
首先,将您提供的方法的返回类型更改为int[]。
您可以尝试实现堆栈或队列,或者简单地坚持使用数组和一组条件。
int size = arr.length;
int newArr[];
if(size % 2 ==0) {
newArr = new int[size-2];
for (int i = 0; i < (newArr.length/2); i++) {
newArr[i] = arr[i];
System.out.println(newArr[i]);
}
for (int i = (newArr.length/2); i < newArr.length; i++) {
newArr[i] = arr[i+2];
System.out.println(newArr[i]);
}
}
else {
newArr = new int[size-1];
for(int i = 0; i < (newArr.length/2); i++) {
newArr[i] = arr[i];
System.out.println(newArr[i]);
}
for (int i = (newArr.length/2); i < newArr.length; i++) {
newArr[i] = arr[i+1];
System.out.println(newArr[i]);
}
}如果输入为123456,这将产生1256,如果输入为12345,则产生1245。
发布于 2016-01-07 03:49:20
在我看来,在“偶数”子句中,您应该更改
for(int i = x; i <= arr.length - 2; i++)至
for(int i = x; i < arr.length - 2; i++)你需要从1,2,3,4,5,6中得到像1,2,5,6或1,2,5,6这样的数组吗?
发布于 2016-01-07 04:13:40
要从数组中删除元素,需要从现有数组中创建一个新数组,然后返回结果,或者将原始数组的引用更改为新创建的数组。
public static void removeMiddle(int[] myArray)
{
int size = myArray.length;
int[] resultArray;
if(size % 2 ==0)
{
resultArray = new int [myArray.length-2];
}
else
{
resultArray = new int [myArray.length-1];
}
int mid1 = myArray.length/2;
int mid2 = myArray.length/2 - 1;
int index = 0;
for(int i=0;i<myArray.length;i++)
{
if(size % 2 ==0 && (i==mid1 || i==mid2))
{
continue;
}
else if(!((size % 2) ==0) && i==mid1)
{
continue;
}
resultArray[index] = myArray[i];
index++;
}
for(int i=0;i<resultArray.length;i++)
{
System.out.println("array[" + i + "] = " + resultArray[i]);
}
}如果myArray将值保持为1,2,3,4,5,6,7,则产出如下
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 5
array[4] = 6
array[5] = 7如果它的值为1,2,3,4,5,6,产出如下
array[0] = 1
array[1] = 2
array[2] = 5
array[3] = 6https://stackoverflow.com/questions/34646896
复制相似问题