很好奇如何编写一个方法来从数组中删除所有零。如果我在main方法中有数组。例如,我的主要方法看起来像
public static void main(String[] args) {
int[] test = {1, 0, 4, 7, 0, 2, 10, 82, 0};
System.out.println(Arrays.toString(test) + ": length = " + test.length);
int[] result = removeZeros(test);
System.out.println(Arrays.toString(result) + ": length = " + result.length);
}
并让代码输出长度和没有零的数组,如:
[1, 0, 4, 7, 0, 2, 10, 82, 0]: length = 9
[1, 4, 7, 2, 10, 82]: length = 6
我不知道如何为此做一个方法,而不是做这样的事情:
int[] test = {1, 0, 4, 7, 0, 2, 10, 82, 0};
int length = 0;
for (int i=0; i<test.length; i++){
if (test[i] != 0)
length++;
}
int [] intResult = new int[length];
for (int i=0, j=0; i<test.length; i++){
if (test[i] != 0) {
intResult[j] = test[i];
j++;
}
}
任何想法如何使这个方法成为一个方法,让它打印出原始数组和没有零的新数组+长度?
答案 0 :(得分:1)
任何想法如何使这个方法成为一个方法,让它打印出原始数组和没有零的新数组+长度?
没有明显更好的方法来删除零。显然,你可以把它放在一个方法中...如果这就是你想要做的。该方法需要创建并返回新数组。 (您无法更改传递给方法的数组参数的大小...)
要打印数组,请使用循环迭代并打印元素,或Arrays.toString(array)
并输出字符串。
要打印数组的长度,请打印array.length
。
答案 1 :(得分:1)
我没有测试它,但这应该有效:
public class Blah {
public static void main(String[] args) {
int[] test = {1, 0, 4, 7, 0, 2, 10, 82, 0};
System.out.println(Arrays.toString(test) + ": length = " + test.length);
int[] result = removeZeros(test);
System.out.println(Arrays.toString(result) + ": length = " + result.length);
}
public int[] removeZeros(int[] test) {
int length = 0;
for (int i=0; i<test.length; i++){
if (test[i] != 0)
length++;
}
int [] intResult = new int[length];
for (int i=0, j=0; i<test.length; i++){
if (test[i] != 0) {
intResult[j] = test[i];
j++;
}
return intResult;
}
}
答案 2 :(得分:1)
只需对您自己的代码进行最轻微的更改,就可以轻松地将其作为一种方法。
int [] removeZeros(int [] test);
{
if (test == null) {
return null;
}
int length = 0;
for (int i=0; i<test.length; i++){
if (test[i] != 0)
length++;
}
int [] intResult = new int[length];
for (int i=0, j=0; i<test.length; i++){
if (test[i] != 0) {
intResult[j] = test[i];
j++;
}
}
return intResult;
}
答案 3 :(得分:1)
使用Java 8:
int[] test = {1, 0, 4, 7, 0, 2, 10, 82, 0}
int[] result = Arrays.stream(test).filter(i -> i != 0).toArray();
答案 4 :(得分:0)
怎么样
代码:
int[] test = {1, 0, 4, 7, 0, 2, 10, 82, 0};
int[] intResult = new int[test.length];
int length = 0;
for (int i=0; i<test.length; i++){
if (test[i] > 0) {
intResult[length] = test[i];
length++;
}
}
if(length > 0)intResult = Arrays.copyOf(intResult, length);