Как проверить, соответствует ли символ в сертификационном индексе элементу в массиве

#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. Привет, спасибо за подробный ответ. Вложенность для каждого цикла — это именно то, что я искал. Да, я еще не готов к регулярным выражениям в своем обучении, но обязательно буду иметь это в виду. Еще раз спасибо!