查找字符串中不是指定字符的第一个字符

时间:2017-04-25 19:08:21

标签: java if-statement methods char indexof

我无法理解这一点。学习基础课程,这个任务是找到一个字符串中的字符索引,该字符串不是少数预先指定的字符之一。

教科书说代码应该是:

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。但我不明白这种方法是如何做到的。知道这是非常基本但你必须从某处开始:)

2 个答案:

答案 0 :(得分:0)

分解if语句:

  • tecken.indexOf(s.charAt(i))将返回一个整数
  • 整数将大于或等于-1
  • 一旦tecken.indexOf(s.charAt(i))返回-1,方法返回i
  • 如果有一个字符不在String tecken
  • 中,我是索引

所以,这个方法是从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;

在这里,您要检查is.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}}的索引