gpt4 book ai didi

java - 程序打印出所需结果的不必要的重复项

转载 作者:行者123 更新时间:2023-12-02 09:39:19 25 4
gpt4 key购买 nike

我创建了一个 Java 程序,它将用户输入作为整数数组,并打印该数组中的所有重复值及其索引。例如,用户输入 5 作为数组大小,然后输入 5 个数字,例如 1、1、1、1、1。程序应打印:重复数量:1重复号码的索引:1重复数量:1重复号码索引:2重复数量:1重复号码索引:3重复数量:1重复号码的索引:4

但是,程序打印:重复数量:1重复号码的索引:1重复数量:1重复号码索引:2重复数量:1重复号码索引:3重复数量:1重复号码索引:4重复数量:1重复号码索引:2重复数量:1重复号码索引:3重复数量:1重复号码索引:4重复数量:1重复号码索引:3重复数量:1重复号码索引:4重复数量:1重复号码的索引:4

我尝试调试程序,得到的结论是,由于打印结果是在循环内,只要循环运行并满足一定条件,就会有多次打印。但是,我找不到使代码不同的方法,因此只打印正确数量的结果。我尝试调整代码:插入break并继续,将print.out语句放在循环之外,但没有任何效果。

    Scanner sc = new Scanner(System.in); int i, j; 
System.out.println("This program lets you enter an array of numbers, and then tells you if any of the numbers are duplices, and what the duplicates' indices are. \nPlease enter your desired array size: ");
int arraySize = sc.nextInt();
while (arraySize <= 0) { System.out.println(arraySize + " is not a valid number. \nPlease enter your desired array size: ");
arraySize = sc.nextInt(); continue;}
int[] arrayList = new int[arraySize];
System.out.println("Please enter your array values: ");
for (i = 0; i < arraySize; i++) {
arrayList[i] = sc.nextInt(); }

for (i = 0; i < arrayList.length; i++) {
for (j = i + 1; j < arrayList.length; j++) {

if (i!=j && arrayList[i] == arrayList[j]) {
System.out.println("Duplicate number: " + arrayList[i]);
System.out.println("Duplicate number's index: " + j); }
else if (i!=j && arrayList[i] != arrayList[j]) {System.out.println("There are no duplicates"); }
}
}

最佳答案

您正在做的是查找重复项的重复项。取 1,1,1。首先,您在索引 1 和 2 处找到 1、索引 0 的两个重复项。然后,您在索引 2 处找到 1、索引 1 的重复项。有多种解决方案。

  1. 跟踪遇到的重复项。如果已经被外循环处理过,则不再处理。为此,您可以使用单独的列表来容纳找到的重复项,并使用contains方法检查它是否存在。

  2. 对列表进行排序,然后查找重复项的序列。这会改变位置,因此它可能不是您想要的。

  3. 找到重复项后将其删除。这也会改变位置,因此它可能也不是您想要的。我还增加了一些额外的复杂性。

您还有一个不同的问题。

  1. 当遇到重复项时,您还会打印出没有找到重复项,这似乎是矛盾的要解决此问题,请使用 boolean 标志,如果发现重复项则设置为 false 并使用该标志退出循环时打印消息。

  2. 由于您启动的内循环比外循环多一个(即 j = 0 和 i = j+1),因此它们永远不可能相同。因此您不需要 (i!=j) 测试。另外,外循环的终止应该是arrayList.length-1

关于java - 程序打印出所需结果的不必要的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57228565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com