#java
#Ява
Вопрос:
Я пытаюсь взять строку в качестве входных данных (около 5-7 символов), перебрать каждый символ и проверить, соответствует ли он символу из массива. Например:
static String Registration(String reg) { int[] numbers = {0, 1, 2, 3, 4, 5, 6, 7 , 8, 9,}; if (reg.length() gt;= 7) { for (int i = 0; i lt; reg.length(); i ) { reg.indexOf(numbers[i]); } } }
Вышесказанное явно неверно. Однако я надеюсь, что это иллюстрирует то, что я пытаюсь сделать. Например, если бы строка была «H3llo», я бы хотел проверить каждый символ в строке и посмотреть, совпадает ли он с какими-либо элементами в массиве. Если это так, я хотел бы сохранить индекс как int.
Вероятно, это не самый эффективный способ сделать это, но это единственный способ, который я могу придумать с моим нынешним уровнем обучения.
Комментарии:
1. Что вы имеете в виду, говоря «соответствует ли он символу из массива или нет»? Ваш массив-это массив целых чисел, а не символов. Вы пытаетесь увидеть, содержит ли строка число 0-9?
2. Какой именно массив символов вы хотите проверить, как спросил @OHGODSPIDERS, имеет значение, если вы просто хотите проверить наличие целых чисел в вашей строке или любых других определенных символов.
3. Имейте в виду, что то, что вы пытаетесь сделать, является чем-то
Regular Expressions
стандартизированным4. @ControlAltDel, я думаю, что @ItchyPrune просто хочет использовать некоторые базовые операторы итерации и сравнения вместо
regex
.5. @ShivangGupta Я согласен с тобой. Однако я обычный «евангелист» — я хочу, чтобы мир узнал о «славе» того, каким может быть текстовый поиск! Не то чтобы я ожидал, что все в практической жизни будут их использовать — я просто хочу, чтобы люди были в курсе.
Ответ №1:
здесь есть несколько проблем с вашим кодом:
- ваш
numbers
массив имеет тип int, однако вы хотите сравнить символы. вместо этого используйте char[] и используйте символы в своем массиве вместо int, как это:'0', '1', ...
- indexOf не является существующим методом для массивов, вместо этого используйте цикл for для перебора всех записей массива и сравнения их вручную
- ваша функция утверждает, что возвращает строку
public String Registration
, но вы хотите вернуть значение int. измените это наpublic int Registration
. - У вас нет возврата в вашей функции. вы должны использовать ключевое
return
слово в своей функции, если ваша функция должна что-то возвращать.
Возможное решение может выглядеть следующим образом:
public static int Registration(String reg) { char[] numbers = {'0', '1', '2', '3', '4', '5', '6', '7' , '8', '9',}; // use a char array char[] and add numbers as chars to array. if (reg.length() gt;= 7) { for (int i = 0; i lt; reg.length(); i ) { char character = reg.charAt(i); for(char number : numbers) { if(number == character) { return i; // found a matching character, return the index of the matching character } } } } // return -1 for the case that we find nothing. return -1; }
пожалуйста, постарайтесь понять, что здесь происходит, а не просто копируйте и вставляйте решение.
Примечание: то, что вы хотите сделать, может быть легко реализовано с помощью регулярных выражений, однако на текущем этапе это может быть слишком сложно для вас.
Комментарии:
1. Привет, спасибо за подробный ответ. Вложенность для каждого цикла — это именно то, что я искал. Да, я еще не готов к регулярным выражениям в своем обучении, но обязательно буду иметь это в виду. Еще раз спасибо!