为什么我的 ArrayList 没有打印出 Java 中所需的输出?

Why doesn't my ArrayList print out the output desired in Java?

这里是相当新的用户,我们正在学习 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 的一部分,但实际上不是。知道该怎么做吗?

Directions for main method

Directions for my method

My output

  1. 您正在分配而不是比较 if (numberFound = true)。它应该是 if (numberFound == true),或者更简单地说是 if (numberFound)
  2. 您的函数 listContains() return 是一个布尔值,您需要将其分配给 numberFound
numberFound = listContains(4);

或者你可以直接在if条件下使用它,

if(listContains(4)) { }
  1. 您的函数 listContains() 有问题。如果找到它应该 return true 如果没有找到它应该 false 在遍历所有元素之后,你不是。在第 1 次迭代中,如果比较是 false,您将打破循环,即 return false
for (int x: listOfNumbers)
{
    if (param1 == x) 
    {
        return true;
    }
}
return false;

如果按照您的class指示

boolean found = false;
for (int x: listOfNumbers)
{
    if (param1 == x) 
    {
        found = true;
        break; // with this you can skip remaining unnecessary iteration
    }
}
return found;