打印字符串中每个字母出现的索引

时间:2019-12-04 20:36:30

标签: java

我如何获得'a'的索引?

我当前的输出:5

    int freq = 0;
    String s = "Happy days are here again";
    char a = 'a';


    //processing
    for(int i = 0;i<=s.length()-1;i++){
        if(s.charAt(i)==a){
            freq++;
        }//end of if

    }//end of for
    System.out.println(freq);

预期输出:1,7,11,20,22

4 个答案:

答案 0 :(得分:0)

这可以做到。只需将它们连接为字符串并打印。


      String s = "Happy days are here again";
      char a = 'a';

      // processing
      String indices = "";
      for (int i = 0; i <= s.length() - 1; i++) {
         if (s.charAt(i) == a) {
            indices += (i + ",");
         } // end of
      } // end of for

      System.out.println(indices.substring(0, indices.length() - 1));

您还可以将它们放在列表中并打印出来。

     List<Integer> indices = new ArrayList<>();
     indices.add(i);

Then later - System.out.println(indices):

答案 1 :(得分:0)

当前,您正在计算字母a的实例并打印实例数。如果需要索引,建议您打印出循环索引i。

int freq = 0;
String s = "Happy days are here again";
char a = 'a';


//processing
for(int i = 0;i<=s.length()-1;i++){
    if(s.charAt(i)==a){
        System.out.print(i + ",");
    }//end of if

}//end of for
System.out.println(freq);

如果严格执行“预期输出”,则需要添加其他逻辑以逗号分隔索引。

答案 2 :(得分:0)

您可以执行以下操作:

class Main {
    public static void main(String str[]) {
        String s = "Happy days are here again";
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'a') {
                System.out.print(i+"\t");
            } // end of if
        } // end of for
    }
}

输出:

1   7   11  20  22  

如果要显示以逗号分隔的索引,可以按以下步骤操作:

class Main {
    public static void main(String str[]) {
        String s = "Happy days are here again";
        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == 'a') {
                sb.append(i+",");
            } // end of if
        } // end of for
        String sbStr=sb.toString();
        sbStr=sbStr.substring(0,sbStr.lastIndexOf(",")); //Remove the last comma
        System.out.println(sbStr);
    }
}

输出:

1,7,11,20,22

您的代码将计算给定aString的频率,而不是显示其存在的索引。

答案 3 :(得分:0)

也许尝试创建一个存储字符出现索引的数组列表?

ArrayList<Integer> answer = new ArrayList<Integer>;
for (int i = 0; i < s.length; i++) {
     if (s.charAt(i) == a) {
         answer.add(i);
     }
}

然后根据需要打印阵列列表。