java - 为什么此方法只将 0 的值返回到新数组?
问题描述
我应该编写一个简短的程序,该程序需要 10 个数字,将值存储在一个数组中,然后将其传递给一个方法 ( eliminateDuplicates()
),该方法创建一个仅包含第一个数组中唯一值的新数组。
但是,我在初始化output
数组或使eliminateDuplicates()
方法正确返回输出数组时遇到了麻烦。输出数组总是充满 0,我不知道为什么会失败。
java.util.Arrays.parallelSort(inputNumbers); //sorts the array in ascending order
eliminateDuplicates(inputNumbers); //passes array to eliminateDuplicates method
//display each unique value in output array
System.out.print("The distinct numbers are ");
for(int i = 0; i < outputNumbers.length; i++)
System.out.print(outputNumbers[i] + " ");
}
public static int [] eliminateDuplicates(int[] list) {
int[] outputNumbers = new int [list.length];
int k = 0;
for (int i = 0; i < list.length; i++)
if(i == 0) //compares each array value against preceding value
outputNumbers[i] = list[i]; //only copies unique values to output array
else
if(list[i] != list [i-1]) {
outputNumbers[k] = list[i];
k++;
}
return outputNumbers;```
解决方案
您忽略了方法返回的数组。
改变
eliminateDuplicates(inputNumbers);
至
int[] outputNumbers = eliminateDuplicates(inputNumbers);
PS您的输出数组与输入数组的长度相同。因此,由于您要消除重复项,因此它可能有一些 0 作为其最后一个元素。如果这不是您想要的,您应该仅在找出输入数组有多少个唯一数字后才创建输出数组。
推荐阅读
- sql - 如何将数组从两个不同的表列转换为平行行?
- javascript - iOS 上的 xhr 请求意外失败
- python - 无法将字符串和列表从一个函数返回到另一个函数
- angular - 如何从 Observable 中检索值以用于服务 API 调用
- c# - 以编程方式禁用和启用 ToolStripMenuItem
- mysql - 如何按(多个值)中的位置对 GROUP_CONCAT 列进行排序?
- ios - 旋转后改变棋盘颜色
- c++ - 使用 GMock 的 EXPECT_DEATH - 没死
- java - 为什么 Spring Boot 由于 URL 未规范化而拒绝 GET 请求?
- angular - Angular 中的指令:它们为什么有用?它们不能被(事件)代替吗?