Получение позиции элемента с использованием метода indexOf

Метод getPosition возвращает позицию элемента в списке, используя метод indexOf в классе ArrayLinearList, всякий раз, когда я передаю аргумент String, он просто возвращает -1 все время, даже если элемент существует в списке

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;
 }
4 ответа

Предполагая, что 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;
 }


В вашей функции 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 ; another case would be you are having letter problem. Try comparing with and нижним регистром letter problem. Try comparing with letter problem. Try comparing with функцией String.equalsIgnoreCase(String)


Предоставьте весь код. Что такое element?

Кстати, попробуйте распечатать значение name - что, если первая строка, которую вы читаете, пуста?


Вы можете забыть хранить строку в array.

array.add("some string here");

Или, вы уверены, что элемент, который вы ищете, находится в массиве?

Попробуйте использовать метод compareTo() вместо equals строк.

licensed under cc by-sa 3.0 with attribution.