2014-10-04 197 views
0

我试图计算字符串中字母的出现次数,但我用数字替换它们以使其更清晰。然后当我运行该代码时,它不显示我想要的结果。我真的不知道为什么...请帮助!非常感谢!!计算字符串中字符的出现次数

Scanner Scanner1 = new Scanner(System.in); 
    out.println("Please type in a string below."); 
    String UserInput = Scanner1.nextLine(); 
    String Index = "12345"; 
    int length = 2;//Modified 
    int[] count = new int[length]; 
    int length2 = 5; //Modified 
    int n1 = 0; 
    int n2 = 0; 
    out.println(UserInput.charAt(n1));//Modified 
    out.println(Index.charAt(n2));//Modified 
    for (int i = 0; i < length; i++) { 
     if (UserInput.charAt(n1) == Index.charAt(n2)) { 
      n1++; 
      count[length - (length - n1)]++; 

     } else { 
      n2++; 
      if(n2==length2) 
      { 
       n2 = n2-length2; 
      } 
     } 
    } 
+3

*但我用数字替换它们使其更清晰*:对我来说根本不清楚。这个计划应该做什么?从你的问题的标题,你应该有一个具有以下签名的方法:'int countOccurrences(char ofChar,String inString)'。尝试实施。你需要一个计数器和一个循环。 – 2014-10-04 07:20:32

回答

2

相对短的和简洁的方式来计算在字符串中的特定字符是使用replaceAll方法的返回值:

public static int countChar(final String str, final char c) { 
    return str.replaceAll("[^" + c + "]","").length(); 
} 

图案[^x]x可以与任何字符被替换(或数量不同的字符))将匹配给定字符串中的所有内容,除了x。因此的TEST将替换ES与给定的替换(这是""(无))并保留T s。该方法将返回TT。如果您计算该长度,您将收到给定字符串的搜索字符数。

示例

System.out.println(countChar("TEST", 'T')); 
System.out.println(countChar("TEST", 'E')); 
System.out.println(countChar("TEST", 'S')); 

打印

2 
1 
1 

(记住,是方法区分大小写)

+0

非常感谢你! :) – Danny 2014-10-04 13:37:52

0

使用集合像HashMap中。这里Character存储遇到的每个唯一字符,Integer存储每个字符遇到的计数。

相关问题