Amberesの:
私が解決しようとしていた問題 Leetcodeでは、と議論し解決策の一つは、以下の通りでした:
public class Solve {
public static void main(String[] args) {
String haystack = "mississippi";
String needle = "issip";
System.out.println(strStr(haystack,needle)) ;
}
public static int strStr(String haystack, String needle) {
for (int i = 0; ; i++) {
for (int j = 0; ; j++) {
if (j == needle.length()) return i;
if (i + j == haystack.length()) return -1;
if (needle.charAt(j) != haystack.charAt(i + j)) break;
}
}
}
}
コンパイラは、ここで「いいえreturn文」というエラーがスローされているべきではないでしょうか。
GBlodgett:
for (int i = 0; ; i++) {
for (int j = 0; ; j++) {
if (j == needle.length()) return i;
if (i + j == haystack.length()) return -1;
if (needle.charAt(j) != haystack.charAt(i + j)) break;
}
}
ここでは、両方のfor
ループは無限ループです。break
声明は、内側の勃発for
ループ。したがって、外側のための終了条件が存在しないfor
以外はループreturn
文。メソッドができないために経路がないreturn
値がそのコンパイラが文句を言うための理由はありませんが。