【发布时间】:2021-12-24 23:42:09
【问题描述】:
这里是新用户,我们正在学习 Java 中的方法并尝试使用 ArrayList 对其进行测试,但它没有提供所需的输出。
这是我创建的两种方法:
// initialize the ArrayList declared in the class block and add some test data to it
private static void addTestData()
{
listOfNumbers = new ArrayList<>();
listOfNumbers.add(23);
listOfNumbers.add(34);
listOfNumbers.add(45);
listOfNumbers.add(56);
}
// returns a true or a false value indicating if a number provided to it is present in an ArrayList
private static boolean listContains(int param1)
{
boolean found = false;
for (int x: listOfNumbers)
{
if (param1 == x)
{
found = true;
}
else
break;
}
return found;
}
我的目标是在 main 方法中测试“4”和“56”是否是 ArrayList 的一部分,所以这是我的代码:
boolean numberFound = false;
addTestData();
System.out.println("*** Testing ArrayList Search ***");
System.out.println("I am going to test if the number 4 is in the ArrayList.");
listContains(4);
numberFound = false;
if (numberFound = true)
System.out.println("The number 4 was found.");
else
System.out.println("The number 4 was not found.");
System.out.println("");
numberFound = false;
addTestData();
System.out.println("I am going to test if the number 56 is in the ArrayList");
listContains(56);
if (numberFound = true)
System.out.println("The number 56 was found.");
else
System.out.println("The number 56 was not found.");
我的输出告诉我 4 是 ArrayList 的一部分,而实际上它不是。知道该怎么做吗?
【问题讨论】:
-
if (numberFound = true),是错字吗?你的意思是==? -
这是一个很好的使用
HashSet;ArrayList将拥有O(n)。else break打破你的循环,只需将其删除。 -
你写的代码毫无意义。如果您刚开始编程,(显然您是)按照教程进行。我还建议在开始使用 Java 之前先学习一门简单的语言,例如 Python。
-
您在
if (numberFound = true)中的分配绝对不正确。如上所述。其次,您没有在变量中捕获listContains(int)的返回值,因此它根本不会影响numberFound变量。第三,如果列表的第一个元素不等于提供的param1,您的函数listContains(int)将终止,因为如果条件不成立,您break。你实际上想要else continue或根本不想要else-block。 -
请注意,出于这个原因,您不应将
==与布尔值一起使用。它已经是一个布尔值;就说if (numberFound)。
标签: java testing arraylist methods call