我想要在主阵列中测试子阵列数组。 但我得到错误。
我正在做的测试是对还是需要添加更多条件?
最后,我需要打印主数组的索引,其中子字符串开始。
回答示例:
String m="cd e";
String n="abcd efghi";
print>>>> 2(the index in n String)
错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at test1.main(test1.java:10)
代码:
String m="cd e";
String n="abcd efghi";
for (int i = 0; i < m.length(); i++) {
for (int j = 0; j < n.length(); j++) {
if(m.charAt(j)==n.charAt(i) )
if(m.charAt(j+1)==n.charAt(i+1))
System.out.println(i);
}
}
感谢&#39; S
答案 0 :(得分:1)
试试这个: 你仔细查看n,因为它的长度最长。我希望这有帮助。 字符串m =“cd e”; 字符串n =“abcd efghi”;
for (int i = 0; i < n.length(); i++) {
for (int j = 0; j <i; j++) {
if (i <= m.length()){ // to prevent indexoutOfbound exception
if(m.charAt(j)==n.charAt(i) ) {
System.out.println(m.charAt(j)+"-->"+i);
}
}
}
}
输出:
c-->2
d-->3
-->4
答案 1 :(得分:0)
package default1;
public class Test {
public static void main(String[] args) {
String m="cd e";
String n="abcd efghi";
System.out.println(n.indexOf(m));
}
}
答案 2 :(得分:0)
int i = 0;
int j = 0;
int index = 0;
boolean previousMatch = false;
while (i < n.length()) {
if (j == m.length()) {
break;
}
if (m.charAt(j) == n.charAt(i)) {
if (!previousMatch) {
previousMatch = true;
index = i;
}
j++;
} else {
previousMatch = false;
index = 0;
j = 0;
}
i++;
}
if (previousMatch)
System.out.println(index);