我正在写一个Java代码,应该删除arraylist中的所有“0”,并返回一个新的列表,但是没有“0”。替代(?)Java解决方案| ArrayList
举一个例子:
public static void main(String[] args) {
int[] sound = {0, 0 , 0, 0, -14, 120, 67, -234, -15, -389, 289, 178, -437, 33, 15, 0, 0, -32, 230, 368};
int[] result = trimSilenceFromFront(sound);
System.out.println(Arrays.toString(result));
}
应该是:
[-14, 120, 67, -234, -15, -389, 289, 178, -437, 33, 15, 0, 0, -32, 230, 368]
我这样做代码:
import java.util.*;
public class NoZero {
public static int[] trimSilenceFromFront(int[] samples) {
int[] newArrayList = new int[samples.length];
for (int i = 0; i < samples.length; i = i + 1) {
if (samples[i] != 0) {
newArrayList.add(samples);
}
}
return newArrayList;
}
}
当我看了看回答他们不得不同时与混合循环循环。但是由于有多种解决方法:我的代码是否错误?
更新:我误解了这个问题。我认为它应该删除所有的“0”。但正如你可以看到的结果,它应该只在开始时消除沉默。
谢谢大家!
有10000点的方式来做到这一点。解决方案的数量与代码的正确性有何关系? – Maroun
'int [] newArrayList = new int [samples.length];'这会创建一个新的_array_而不是'ArrayList'。另外'newArrayList.add(samples);'这会尝试将整个'samples'数组添加到'newArrayList',而不仅仅是'samples [i]' –
'newArrayList'的值是'int []',你不能使用'add'就可以了。它不是*数组列表。 – Maroun