我有整数 a = 4 和数组 b 7,8,9,4,3,4,4,2,1
我必须编写一个方法从数组 b 中删除 int ALL a
期望的结果 7,8,9,3,2,1
这是我目前的情况,
public static int[] removeTwo (int x, int[] array3)
{
int counter = 0;
boolean[] barray = new boolean [array3.length];
for (int k=0; k<array3.length; k++)
{
barray[k] = (x == array3[k]);
counter++;
}
int[] array4 = new int [array3.length - counter];
int num = 0;
for (int j=0; j<array3.length; j++)
{
if(barray[j] == false)
{
array4[num] = array3[j];
num++;
}
}
return array4;
我收到这个错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Utility.removeTwo(Utility.java:50)
at Utility.main(Utility.java:18)
Java 结果:1
如有任何帮助,我们将不胜感激!
最佳答案
错误源于这个 for 循环:
for (int k=0; k<array3.length; k++)
{
barray[k] = (x == array3[k]);
counter++;
}
当您创建 int[] array4 = new int [array3.length - counter];
时,您正在创建一个大小为 0 的数组。如果该项目是所需的项目,您应该只增加计数器删除:
for (int k=0; k<array3.length; k++)
{
boolean b = (x == array3[k]);
barray[k] = b;
if(b) {
counter++;
}
}
要在评论中回答您的问题,应该调用该方法并可以像这样检查:
public static void main(String[] args) {
int[] array3 = {0,1,3,2,3,0,3,1};
int x = 3;
int[] result = removeTwo(x, array3);
for (int n : result) {
System.out.print(""+ n + " ");
}
}
关于java - 从数组中删除特定值(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472812/