我有一个简单的代码,可以根据用户输入创建一个数组:
import java.util.Scanner;
class Main {
Scanner in = new Scanner(System.in);
int NumOfValues = in.nextInt();
int [] array = new int[NumOfValues];
}
现在我想获取n的倍数的所有索引并删除它们。例如:array[n]
,array[2n]
等等。感谢所有帮助。
答案 0 :(得分:0)
我不确定你是否意味着删除n的倍数的条目或n的倍数的索引?
如果前者和你可以使用Java 8,那么使用流来做这件事是微不足道的:
array = Arrays.stream(array)
.filter(i -> i % n != 0)
.toArray();
如果您不熟悉流,那么这句话说:将我的数组转换为整数流,只过滤那些不是n的倍数(即模数n不为零)的数组,然后收集在一个新阵列中流。
如果是后者(即删除每个第n项),那么你仍然可以使用流,但它有点模糊:
array = IntStream.range(0, array.length)
.filter (i -> i % n != 0)
.map(i -> array[i])
.toArray();
这实际上产生了一个表示索引的整数流,过滤它们,映射到数组的相应项并转换回新数组。
答案 1 :(得分:0)
首先,您的代码不完整。您的代码至少需要一个函数(可能是main()
)。此外,您应该将给定的变量移动到此函数中(至少大多数)。在您询问有关删除值之前,您应首先显示如何填充数组