如何在不使用indexOf方法的情况下找到字符串中第一个char's的位置

时间:2019-09-30 17:59:53

标签: java indexof

所以我想做的是找到字符串的第一个“ s”的位置。所以我打印出来,输出为7。我希望indexFirst的值为0,因为字符串的“ she”包含“ s”。

发布问题后我马上就知道了,谢谢


public class string 
{

    public static void main(String[] args) 
    {

      String str = "she is so nice";
      char replacedFirst = 's';
      int indexFirst = 0;

      for(int index = 0; index < str.length(); index++)
      {
        if(str.charAt(index) == replacedFirst)
        {
          indexFirst = index;
        }
      }
      System.out.println(indexFirst);
 }

}

4 个答案:

答案 0 :(得分:1)

Break for loop,当您第一次出现要搜索的char时。当前,您当前的代码将返回char的最后一个索引。

if(str.charAt(index) == replacedFirst)
{
  indexFirst = index;
  break;
}

答案 1 :(得分:0)

正如阿米特(Amit)所说,for的中断是代码中的问题。

str.indexOf("s")也会这样做。您根本不需要。

答案 2 :(得分:0)

或者,您也可以使用for进行增强的String.toCharArray()循环,以在每个char上进行迭代:

public static void main(String[] args) {
      String str = "she is so nice";
      char replacedFirst = 'e';
      int indexFirst = 0;

      for (char c : str.toCharArray()) {
          if(c == replacedFirst)
          {
              break;
          }
          indexFirst++;
      }
      System.out.println(indexFirst);
}

这将使用您的indexFirst并在每次迭代时将其递增,如果break匹配,则将使用char

e的输出:

  

2

答案 3 :(得分:0)

您可以按照以下代码段来实现。如果将indexFirst初始化为0,即使字符串不包含's',它也将始终输出0。

public class string { 
    public static void main(String[] args) { 
        String str = "she is so nice"; 
        char replacedFirst = 's'; 
        int indexFirst = -1; 
        for(int index = 0; index < str.length(); index++;  { 
            if(str.charAt(index) == replacedFirst) { 
                indexFirst = index;
                if(indexFirst != -1) {
                    break;
                }
 } } System.out.println(indexFirst); } }`