我无法理解这一点。学习基础课程,这个任务是找到一个字符串中的字符索引,该字符串不是少数预先指定的字符之一。
教科书说代码应该是:
public static int sokForstaIckeBland (String s, String tecken, int start) {
for (int i=start; i<s.length(); i++)
if (tecken.indexOf(s.charAt(i)) == -1)
return i;
return -1;
}
String s是我要搜索字符的文本,字符串tecken是我想在搜索中排除的字符,int start是从哪里开始搜索。
我不明白为什么if语句以-1结尾,这是做什么的?
编辑: 一个例子。 String s =“28723709dh23ha”和String tecken =“= 0123456789”。当它被执行时,我想找到第一次出现的不是0123456789的char,并且返回了int。但我不明白这种方法是如何做到的。知道这是非常基本但你必须从某处开始:)
答案 0 :(得分:0)
分解if语句:
所以,这个方法是从s.charAt(start)开始检查s中的每个字符(因为我被初始化为start)。该方法将s.charAt(i)与tecken中的每个字符进行比较。如果s.charAt(i)处于tecken状态,则tecken.indexOf(s.charAt(i))将返回s.charAt(i)的索引,该索引出现在tecken中。如果s.charAt(i)不在tecken中,则tecken.indexOf(s.charAt(i))返回-1。 这就是我们与-1比较的原因。
答案 1 :(得分:0)
if (tecken.indexOf(s.charAt(i)) == -1)
return i;
在这里,您要检查i
中s.charAt(i)
的字符tecken
是否存在于字符串tecken
中,因此您在tecken.indexOf(s.charAt(i))
字符串中查找其索引indexOf
1}}。
-1
将返回tecken
。因此,如果在字符串中找不到它,则函数返回该索引,因为它是第一个
字符串return -1;
中没有的char,这就是你想要的。
在这一行
-1
如果找不到任何字符,则只返回s = "28723709dh23ha"
,表示没有任何索引符合条件。
对于字符串tecken = "0123456789"
和字符串8
,它将返回d
,这是字符串s = "28723709dh23ha"
中的字符{{1}}的索引