2015-06-11 52 views
1

我想计算字符串中字符出现次数的平均值,例如,如果我传递一个数组[“hie”,“raisin”,“critical”],并且通过目标我然后我的方法应该返回1.6。我如何在Java中字符串数组中一个字符的出现次数的平均值

public class Try { 

    public static double averageCount(String[] array,char target) 
    { 
     double avg=0.0; 
     String str; 
     char ch; 
     int total=0; 

     for (int i = 0; i < array.length; i++) { 
      str=array[i]; 
      total=count(str,target); 

      System.out.println(total); 

     } 
     avg=total/array.length+1; 
     return avg; 
    } 
    public static int count(String str, char target) 
    { 
     int count=0; 
     for (int i = 0; i <str.length(); i++) { 

      if(str.charAt(i)==target) 
      { 
       count++; 
      } 
     } 

     return count; 
    } 

    public static void main(String[] args) { 
     double avg=0.0; 
+2

你是怎么计算1.6?你的问题是什么?你发布了一个代码,它工作吗? – Maroun

+0

除了被'main'部分截断之外,你的代码有什么问题?它是否编译?它运行没有错误吗?你给了什么输入和什么输出你回来?你期望得到什么产出? – azurefrog

+2

@MarounMaroun:5/3.我猜我的总数除以单词数。它涉及到1.67 – TheLostMind

回答

2

为此,需要总添加到先前的值。

total = count(); //this replaces the original total.

使用

total = total + count();

total += count();

而平均会

total/array.length //array.length would return the total number of elements in it.(here 3)

3

我的FPGA实现:

String[] array = new String[]{"hie","raisin","critical"}; 
Double[] occs = new Double[256]; 
for(int i = 0; i < occs.length; i++) { 
    occs[i] = 0.; 
} 
for(String str: array) { 
    for(char ch: str.toCharArray()) { 
     occs[ch]++; 
    } 
} 
System.out.println(occs['i']/array.length); // 1.66... 
System.out.println(occs['r']/array.length); // 0.66... 
+0

'occs ['i']'?这是如何运作的? – CKing

+0

@ Chetan Kinger Charater是ASCII码,所以它的类型是整数。 –

+0

@ code - 熊猫我的不好。聪明的回答。从未想过在Java(关联数组)中以这种方式使用数组+1 – CKing

0

如果您使用的是Java 8,可以简化您的计数逻辑有点如下:

String[] array = new String[]{"hie","raisin","critical"}; 
String target = "i"; 
double count = Arrays.stream(array).map(s->s.split("")).flatMap(Arrays::stream).filter(ch->ch.equals(target)).count(); 
double average = count/array.length; 
System.out.println(average); 
相关问题