Как сравнить элементы массива с другой переменной?
Есть массив с n кол-вом строк, есть строка, которая вводится. Надо сравнить и при совпадении присвоить номер элемента новой переменной. Совпадение может быть только 1.
Ну и в каком месте у тебя возникает проблема?)
Пусть есть массив a и строка s.
Скажем, так:
String[] a = new String[] {"Петя", "Нюра", "Коля", "Саша"};
String s = "Коля";
Найдем s в массиве a и назовем индекс.
Для этого будем в цикле менять переменную i от нуля до длины массива (исключительно, то есть для длины n наибольшее i будет равно n − 1).
int index = -1;
for (int i = 0; i < a.length; i++) {
if (s.equals(a[i])) {
index = i; //Запомнили индекс совпавшего элемента
break; //Вышли из цикла
}
}
Далее: если индекс остался -1, как раньше, то имя не найдено. Иначе найдено.
if (index < 0) {
System.out.println("Не знаю тебя, "+s);
} else {
System.out.println("Ааа, тот самый "+s+"! Ну проходи. Твой индекс "+index);
}
метод equals
У меня и так КПД низкий, так что еще один ответ, что наверняка не станет лучшим, намного хуже не сделает.
Занятно, что в С++ это все можно провернуть силами стандартной библиотеки в одну строку кода
#include
#include
#include
#include
int main(){
std::vector list = {"Вася", "Петя", "Маша", "Вова"};
std::string name = "Маша";
size_t dist = std::distance(list.cbegin(), std::find(list.cbegin(), list.cend(), name));
std::cout << dist << std::endl;
return 0;
}
Я почему-то почти уверена, что в Java тоже так можно