Проверка на выход за пределы строки в цикле - C#

Узнай цену своей работы

Формулировка задачи:

Здраствуйте, подскажите как в таком коде сделать проверку на выход за пределы строки?
Листинг программы
  1. using System;
  2. namespace StrInStr
  3. {
  4. class MainClass
  5. {
  6. public static string checkStr(string strT, string strS)
  7. {
  8. int countTrue = 0;
  9. for (int i = 0; i < strT.Length; i++)
  10. {
  11. countTrue = 0;
  12. for (int j = 0; j < strS.Length; j++)
  13. {
  14. if ((i + j) > strT.Length) return "NO";
  15. if (strS[i] == strT[i + j] || strT[i + j] == '?') countTrue++;
  16. if (countTrue == strS.Length) return "YES";
  17.  
  18. }
  19.  
  20. }
  21. return "NO";
  22. }
  23.  
  24. public static void Main(string[] args)
  25. {
  26. string strT = Console.ReadLine();
  27. string strS = Console.ReadLine();
  28. Console.WriteLine(checkStr(strT, strS));
  29. Console.ReadKey();
  30.  
  31. }
  32. }
  33. }
Листинг программы
  1. if ((i + j) > strT.Length) return "NO";
Этот код не работает. Получаем ошибку System.IndexOutOfRangeException: Индекс находился вне границ массива. at в System.String.get_Chars(Int32 index) at в StrInStr.MainClass.checkStr(String strT, String strS) в C:\Users\Евгений\Documents\Projects\StrInStr\StrInStr\Program.cs:строка 16 at в StrInStr.MainClass.Main(String[] args) в C:\Users\Евгений\Documents\Projects\StrInStr\StrInStr\Program.cs:строка 39 Данная программа производит поиск вхождения подстроки strS в строку strT при условии что '?' может быть заменен на произвольный символ.

Решение задачи: «Проверка на выход за пределы строки в цикле»

textual
Листинг программы
  1. if (strS[i] == strT[i + j] || strT[i + j] == '?') countTrue++;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы