這里的新用戶,我們正在學習 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 的一部分,而實際上它不是。知道該怎么做嗎?
主要方法的說明
我的方法的說明
我的輸出
uj5u.com熱心網友回復:
- 您正在分配而不是比較
if (numberFound = true)。應該是if (numberFound == true),或者更簡單地說if (numberFound)。 - 您的函式
listContains()回傳一個布林值,您需要將其分配給numberFound.
numberFound = listContains(4);
或者你可以直接在if條件下使用它,
if(listContains(4)) { }
- 你的函式
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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357377.html
