Java
Как сравнить элементы массива с другой переменной?
Есть массив с 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);
}
Скажем, так:
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);
}
Гузачёв Пётр
при всей крутости вашего кода, вы явно не вчитывались в задание...
У меня и так КПД низкий, так что еще один ответ, что наверняка не станет лучшим, намного хуже не сделает.
Занятно, что в С++ это все можно провернуть силами стандартной библиотеки в одну строку кода
#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 тоже так можно
Занятно, что в С++ это все можно провернуть силами стандартной библиотеки в одну строку кода
#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 тоже так можно
Гузачёв Пётр
откуда такая уверенность?
в вашем с++ коде вы оперируете готовыми портами ввода/вывода, придуманными чтоб вам думать не надо было...
да и в смысл вызываемых методов вы особо не вникаете... некогда да?
в вашем с++ коде вы оперируете готовыми портами ввода/вывода, придуманными чтоб вам думать не надо было...
да и в смысл вызываемых методов вы особо не вникаете... некогда да?
метод equals
Похожие вопросы
- Ребят почему оба элемента массива принимают одинаковое значение? JAVA
- (JAVA) Как прописать чтобы в массиве не было одинаковых элементов?
- Как создать цикл, который будет считать количество минимальных значений массива на джава
- Задача Есть 2 массива. из первого массива все положительные числа переносим в начало второго массива
- почему одни переменные могут объявлять буквы другие цифры?
- Как сделать так,что бы минимальный элемент каждой строки оказался в начале? Что неправильно сделала
- Зачем создают приватные переменные, а затем делают их общедоступными через публичные методы?
- Разве так можно связывать внешние переменные с переменными метода?
- Переменная в for loop
- Equals неполучается сравнить обьекты