我第一次发布问题时没有运气,所以我想我会再试一次。我是一名新的Java程序员,目前正处理一小段代码。简而言之,我已经创建了一个数组和一个变量,我希望这个程序要做的是获取数组和变量,将其传递给方法,让方法查看数组,如果数组中的任何数字是与变量“8”相同,将它们从数组中“创建一个新数组”返回到main并将其打印出来。
我希望数组{2,4,8,19,32,17,17,18,25,17,8,3,4,8}显示{2,4,19,32} ,17,17,18,25,17,3,4}被传回主要后请向我解释我做错了什么,请记住我是java的新手。
public class Harrison7b
{
public static void main(String [] args)
{
int[] arrayA = {2,4,8,19,32,17,17,18,25,17,8,3,4,8};
int varB = 8;
// Call with the array and variable you need to find.
int[] result = newSmallerArray(arrayA, varB);
for(int x = 0; x < arrayA.length; x++)
{
System.out.print(arrayA[x] + " ");
}
}
public static int[] newSmallerArray( int[] arrayA, int varB)
{
int count = 0;
for(int x = 0; x < arrayA.length; x++)
{
if(arrayA[x] == varB)
{
count++;
}
}
int [] arrayX = new int[arrayA.length - count];
int index = 0;
for(int B = 0; B < arrayA.length; B++)
{
if(arrayA[B] != varB)
{
index++;
}
}
return arrayX;
}
}
答案 0 :(得分:1)
简单的衬垫就足够了:
public static int[] newSmallerArray( int[] arrayA, int varB)
{
return Arrays.stream(arrayA).filter(i -> i != varB).toArray();
}
答案 1 :(得分:0)
你错过了初始化阵列arrayX,尝试按照解决方案
public class Harrison7b
{
public static void main(String [] args)
{
int[] arrayA = {2,4,8,19,32,17,17,18,25,17,8,3,4,8};
int varB = 8;
// Call with the array and variable you need to find.
int[] result = newSmallerArray(arrayA, varB);
for(int x = 0; x < result.length; x++) {
System.out.print(result[x] + " ");
}
}
public static int[] newSmallerArray( int[] arrayA, int varB)
{
int count = 0;
for(int x = 0; x < arrayA.length; x++)
{
if(arrayA[x] == varB)
{
count++;
}
}
int [] arrayX = new int[arrayA.length - count];
int index = 0;
for(int B = 0; B < arrayA.length; B++)
{
if(arrayA[B] != varB)
{
arrayX[index]= arrayA[B];
index++;
}
}
return arrayX;
}
}