【发布时间】:2014-03-07 16:24:50
【问题描述】:
程序应该打印“数字 11 出现不止一次” 然后将 duplicateFound 设置为 true 并退出 while 循环,因为它是 true。 但它也会打印“数字 13 不止一次出现”。
为什么会发生这种情况以及如何中断 while 循环,以便在找到第一个重复项 (11) 后它不会继续运行? 这是一个效率问题,因为我只想知道是否存在重复。 我不在乎有多少。
public class DuplicateNumbers
{
public static void main(String[] name)
{
int[] myArray = { 64, 17, 9, 55, 2, 11, 11, 1, 8, 23, 13, 13};
boolean duplicateFound = false;
while (duplicateFound == false)
{
for(int i = 0; i < myArray.length; i++)
{
for(int j = i + 1; j < myArray.length; j++)
{
if(myArray[j] == myArray[i])
{
System.out.println("The number " + myArray[i] + " occurs more than once.");
duplicateFound = true;
}
}
}
}
if(duplicateFound == false)
{
System.out.println("There are no duplicates.");
}
System.out.println("Array length is " + myArray.length);
}
}
【问题讨论】:
-
如果你说这是什么语言会很有帮助。一般来说,大多数有循环的语言都有一些中断/继续功能来中止这些循环。
-
您的“while”测试不会每次都进行测试,它会在您到达当前循环结束时进行测试,因此所有“for”循环都将在测试“duplicateFound 值”之前完成。
标签: java while-loop