2016-11-18 1 views
-2

Добрый день, Я хочу написать метод, который достигает (запрашивает) две строки и проверяет, является ли String2 в случае String1. Если s2 находится в s1, он возвращает индекс последнего вхождения String2, в противном случае он возвращает -1. Это легко, используя метод lastIndexOf(), но я этого не хочу. На самом деле, было бы намного лучше Если мы не будем использовать удобные строковые методы (кроме charAt и length).Печать последнего индекса строки без использования lastIndexOf()

Итак, вот мой код до сих пор (Это действительно плохой код):

int contains() { 
    Scanner scan0 = new Scanner(System.in); 
     System.out.println("Enter firts string: "); 
    String s1 = scan0.nextLine(); 
     System.out.println("Enter second string: "); 
    String s2 = scan0.nextLine(); 

    for(int i = 0; i<s1.length(); i++) { 
     for(int t = 0; t<s2.length(); t++) { 
      char desiredChar = s2.charAt(t); 
      char letter = s1.charAt(i); 
      if(desiredChar == letter) 
       System.out.print(s2.charAt(i)); 
     } 

    } 
    return 0; 
} 

Это дает java.lang.StringIndexOutOfBoundsException ошибку.

+0

Почему вы не хотите использовать встроенные методы Java для этого, я имею в виду, что у вас нет времени провести исследование для вас здесь –

+0

Я обновил код. – f1r4tc

ответ

1

Вы не проверяете наличие символов s2 в s1. вам необходимо пройти s1char по char и проверить, соответствуют ли это char и следующие один раз s2. если у вас есть strings, так как вы пробиваете s1 и возьмете, например, первые char=M и следующие 2, чтобы у вас было 3 символа, как в s2. то у вас есть Mis и the, так как они не совпадают, вам нужно перейти к следующему символу и следующим образом: iss и так далее, пока у вас не будет соответствующих строк. после их появления вы можете вернуть индекс первого символа строки в s1.

Смежные вопросы