方法getPosition使用ArrayLinearList类中的方法indexOf返回列表中项目的位置,每当我传递一个String的参数时,它就会一直返回-1,即使该项目存在于列表中< / p>
private ArrayLinearList array;
private Scanner scanner;
public ArrayShoppingList1()
{
array = new ArrayLinearList();
scanner = new Scanner(System.in);
}
public int getPosition()
{
System.out.println("Please enter the name of the Item");
String name = scanner.nextLine();
int z = array.indexOf(name);
return z;
}
/** @return index of first occurrence of theElement,
* return -1 if theElement not in list */
public int indexOf(Object theElement)
{
// search element[] for theElement
for (int i = 0; i < size; i++)
if (element[i].equals(theElement))
return i;
// theElement not found
return -1;
}
答案 0 :(得分:0)
您可能忘记将字符串存储到array
。
array.add("some string here");
或者,您确定要搜索的元素是否在数组中?
尝试使用compareTo()
方法代替equals
来比较字符串。
答案 1 :(得分:0)
请提供整个代码。什么是element
?
顺便说一句,请尝试打印name
的值 - 如果您读取的第一行是空的,该怎么办?
答案 2 :(得分:0)
在indexOf
函数中:
public int indexOf(Object theElement)
{
// search element[] for theElement
for (int i = 0; i < size; i++)
if (element[i].equals(theElement))
return i;
// theElement not found
return -1;
}
大小可能是< 1
。 ; another case would be you are having
大写and
小写letter problem. Try comparing with
String.equalsIgnoreCase(String)`function
答案 3 :(得分:0)
假设theElement
提供了一个字符串。
public int indexOf(Object theElement)
{
String S = (String) theElement;
// search element[] for theElement
for (int i = 0; i < size; i++)
if (element[i].equalsIgnoreCase(S))
return i;
// theElement not found
return -1;
}