繁体   English   中英

为什么我的 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 的一部分,而实际上它不是。 知道该怎么做吗?

主要方法的说明

我的方法的说明

我的输出

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

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

if(listContains(4)) { }
  1. 您的函数listContains()有问题。 在遍历所有元素后,如果找到它,它应该返回true ,否则返回false ,而你不是。 在第一次迭代时,如果比较为false ,则您正在破坏循环,该循环返回false
for (int x: listOfNumbers)
{
    if (param1 == x) 
    {
        return true;
    }
}
return false;

如果根据你的课堂指示

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM