下午好, 我想写一个到达(询问)两个字符串并检查String2是否在String1情况下的方法。如果s2在s1中,则返回索引 String2的最后一次出现,否则返回-1。使用lastIndexOf()方法很容易,但我不希望这样。实际上,如果我们不使用方便的字符串方法(charAt和length除外)会更好。
所以,这是我的代码到目前为止(这是一个非常糟糕的代码):
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 :(得分:1)
您不会检查s2
中s1
字符的出现次数。您需要在s1
之后浏览char
char
并检查char
和以下一次是否匹配s2
。意味着如果你有[{1}}给定的话,你可以遍历strings
,例如第一个s1
和下一个2,所以你有3个字符就像char=M
一样。然后你有s2
和Mis
,因为它们不匹配你必须转到下一个字符串,然后是the
,依此类推,直到你有匹配的字符串。一旦你拥有它们就可以返回s1中字符串的第一个char的索引。