数组大小不能变化,这个题目就只能新建一个数组把需要的数赋值进去返回给调用者了public class Test { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; arr = delArr(arr, 3); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }
public static int[] delArr(int[] arr, int index){ int[] a = new int[arr.length - 1]; int temp = 0; for(int i = 0; i < arr.length; i++){ if(arr[i] == index) continue; a[temp++] = arr[i]; } return a; } }
import java.util.ArrayList; import java.util.List;public class TestArray { public static void main(String args[]){ int a[] ={1,2,3,4,5}; List<Integer> list = new ArrayList<Integer>(); for(int i = 0; i < a.length; i++) list.add(a[i]); list.remove(2); System.out.println(list); } }
public class ModifyArray { public static void main(String[] args) { int[] a = { 1, 2, 3, 4, 5 }; int index = binarySearch(a, 3); int[] b = new int[a.length - 1]; for (int i = 0; i < a.length; i++) { if (i <= index) { b[i] = a[i]; } else { b[i - 1] = a[i]; } } } /** * 二分查找 * * @param a * @param key * @return */ public static int binarySearch(int[] a, int key) { if (a.length == 0) return -1; // 开始位置 int first = 0; // 结束位置 int last = a.length - 1; // 中间位置 int mid; // 如果开始时,小于则结束. while (first <= last) { mid = (first + last) / 2; // 如果等于key,返回这个数在数组中的位置. if (a[mid] == key) return mid; // 如果大于key,则在左边. if (a[mid] > key) last = mid - 1; // 如果小于key,则在右边 if (a[mid] < key) first = mid + 1; } return -1; }}
int[] a={1,2,3,4,5}; StringBuffer sb = new StringBuffer(); for(int i = 0; i < a.length; i++){ sb.append(a[i]).append(","); } System.out.println(sb.toString().replaceAll("3,", ""));
学习清洁工的方法: int[] a={1,2,3,4,5}; StringBuffer sb = new StringBuffer(); for(int i = 0; i < a.length; i++){ sb.append(",").append(a[i]); } System.out.println(sb.toString().replaceAll("3,", "").substring(1));
最好用List public static void main(String[] args) { int[] a = { 1, 2, 3, 4, 5 }; int[] b = deleteAt(a, 2); // 具体要删的位置在哪里,自己计算,这里只是抛砖引玉 System.out.println(Arrays.toString(b)); } public static int[] deleteAt(int[] array, int index) { int[] newArray = new int[array.length - 1]; System.arraycopy(array, 0, newArray, 0, index); System.arraycopy(array, index + 1, newArray, index, array.length - index - 1); return newArray; }
学习清洁工的方法: Java code int[] a={1,2,3,4,5}; StringBuffer sb = new StringBuffer(); for(int i = 0; i < a.length; i++){ sb.append(",").append(a[i]); } System.out.println(sb.toString().replaceAll("3,", "").substring(1));
int [] srcs={1,2,3,4,5}; int n=4; if(n<srcs.length){ int [] tars=new int[4]; System.arraycopy(srcs, 0, tars, 0, n); System.arraycopy(srcs, n+1, tars, n, srcs.length-n-1); System.out.println(Arrays.toString(tars)); }
public static void main(String arg[]){ List<Integer> list=deleteArrayByObj(Arrays.<Integer>asList(1,2,3,4,5),3); System.out.println(list); }
public static List deleteArrayByObj(List srcList,Object obj){ List list=new ArrayList(); list.addAll(srcList); if(list.contains(obj)) list.remove(obj); return list; }
int[] arr = {1,2,3,4,5};
arr = delArr(arr, 3);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static int[] delArr(int[] arr, int index){
int[] a = new int[arr.length - 1];
int temp = 0;
for(int i = 0; i < arr.length; i++){
if(arr[i] == index)
continue;
a[temp++] = arr[i];
}
return a;
}
}
import java.util.ArrayList;
import java.util.List;public class TestArray {
public static void main(String args[]){
int a[] ={1,2,3,4,5};
List<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < a.length; i++)
list.add(a[i]);
list.remove(2);
System.out.println(list);
}
}
{
public static void main(String[] args)
{
int[] a = { 1, 2, 3, 4, 5 };
int index = binarySearch(a, 3);
int[] b = new int[a.length - 1];
for (int i = 0; i < a.length; i++)
{
if (i <= index)
{
b[i] = a[i];
}
else
{
b[i - 1] = a[i];
}
}
} /**
* 二分查找
*
* @param a
* @param key
* @return
*/
public static int binarySearch(int[] a, int key)
{
if (a.length == 0)
return -1;
// 开始位置
int first = 0;
// 结束位置
int last = a.length - 1;
// 中间位置
int mid;
// 如果开始时,小于则结束.
while (first <= last)
{
mid = (first + last) / 2;
// 如果等于key,返回这个数在数组中的位置.
if (a[mid] == key)
return mid;
// 如果大于key,则在左边.
if (a[mid] > key)
last = mid - 1;
// 如果小于key,则在右边
if (a[mid] < key)
first = mid + 1;
}
return -1;
}}
StringBuffer sb = new StringBuffer();
for(int i = 0; i < a.length; i++){
sb.append(a[i]).append(",");
}
System.out.println(sb.toString().replaceAll("3,", ""));
int[] a={1,2,3,4,5};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < a.length; i++){
sb.append(",").append(a[i]);
}
System.out.println(sb.toString().replaceAll("3,", "").substring(1));
int[] a = {
1, 2, 3, 4, 5
};
int[] b = deleteAt(a, 2); // 具体要删的位置在哪里,自己计算,这里只是抛砖引玉
System.out.println(Arrays.toString(b));
} public static int[] deleteAt(int[] array, int index) {
int[] newArray = new int[array.length - 1];
System.arraycopy(array, 0, newArray, 0, index);
System.arraycopy(array, index + 1, newArray, index, array.length - index - 1);
return newArray;
}
如果对数据结构没有要求,可以考虑List对象,会自动帮你清理如果只想用int[],那你只能自己写移动和清理的代码,数组对象本身不提供这类风发
int[] b = new int[4];
System.arraycopy(a, 0, b, 0, 2);
System.arraycopy(a, 3, b, 2, 2);
for(int l:b){
System.out.println(l);
}
List<int> list = new List<int>();
for (int i = 0; i < a.Length; i++)
{
list.Add(a[i]); list.Remove(3);
} for (int i = 0; i < list.Count; i++)
{
Console.Write(list[i] + " ");
}
Console.ReadLine();C#这样写也可以哦
如果对数据结构没有要求,可以考虑List对象,会自动帮你清理如果只想用int[],那你只能自己写移动和清理的代码,数组对象本身不提供!!
Java code int[] a={1,2,3,4,5};
StringBuffer sb = new StringBuffer();
for(int i = 0; i < a.length; i++){
sb.append(",").append(a[i]);
}
System.out.println(sb.toString().replaceAll("3,", "").substring(1));
int [] srcs={1,2,3,4,5};
int n=4;
if(n<srcs.length){
int [] tars=new int[4];
System.arraycopy(srcs, 0, tars, 0, n);
System.arraycopy(srcs, n+1, tars, n, srcs.length-n-1);
System.out.println(Arrays.toString(tars));
}
List<Integer> list=deleteArrayByObj(Arrays.<Integer>asList(1,2,3,4,5),3);
System.out.println(list);
}
public static List deleteArrayByObj(List srcList,Object obj){
List list=new ArrayList();
list.addAll(srcList);
if(list.contains(obj))
list.remove(obj);
return list;
}
但是为什么会是4呢???