【发布时间】:2023-03-20 09:35:01
【问题描述】:
我需要一些帮助。我目前正在编程关于多态性,这是我作业的规定。我愿意就如何去做。
作业规定: 使用以下标头编写一个从整数数组列表中删除重复元素的方法:
public static void removeDuplicate(ArrayList list)
编写一个测试程序,提示用户在列表中输入 10 个整数,并显示由一个空格分隔的不同整数。这是一个示例运行:
输入十个整数:10 20 30 20 20 30 50 60 100 9
不同的整数是:[10, 20, 30, 50, 60, 100, 9]
这是我目前的代码:
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayInput extends ArrayList{
public static int a[];
public static int[] inputArrays(int a[]) {
for(int i = 0; i < 10; i++) {
Scanner input = new Scanner(System.in);
a[i] = input.nextInt();
}
return a;
}
public static void removeDuplicate(ArrayList list) {
for(int i = 0; i < 10; i++) {
if(a[i] != a[i--] ) {
list = a[i];
}
}
}
}
【问题讨论】:
-
每次“if”条件成功时,您都会将 arraylist 重新分配给一个 int 元素。相反,将元素“添加”到数组列表中。
-
最好的办法是在阅读时检查重复项。要检查未排序列表中的重复项,您必须查看整个列表,您拥有的代码只会删除彼此相邻的重复项。另一个错误是您将 i 初始化为 0 然后检查 i--,因此您将越界并同时更改 i,从而使您的循环永远不会终止
-
你需要的签名很糟糕,你不应该使用原始类型。
-
扩展
ArrayList是完全没有必要的。您真正想要的是a成为ArrayList<Integer>而不是int[]。