java - 有更简单有效的方法来做到这一点吗?

标签 java

好吧,我认为自己了解基础知识和一些高级 Java,但仍然没有勇气开始编写我的想法。这是我想出的一个简单程序,它基本上输出您的文本中特定字母的数量(我认为我措辞错误......)这是我的代码:

public class gene {

public static void main(String[] args) {

    String[] phrases = {"hello", "egg", "learning", "ferrero", "rocher",
            "Horologe", "Twinling"};
    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int e=0;
    int f=0;
    int g=0;
    int h=0;
    int i=0;
    int j=0;
    int k=0;
    int l=0;
    int m=0;
    int n=0;
    int o=0;
    int p=0;
    int q=0;
    int r=0;
    int s=0;
    int t=0;
    int u=0;
    int v=0;
    int w=0;
    int x=0;
    int y=0;
    int z=0;

    for(int ii =0; ii <phrases.length; ii++){
    char[] charphrases = phrases[ii].toCharArray();
    for(int iii = 0; iii<charphrases.length; iii++){
        switch(charphrases[iii]){
        case ('a'):
            a++;
        break;          
    case ('b'):
        b++;
    break;
    case ('c'):
        c++;
    break;
    case ('d'):
        d++;
    break;
    case ('e'):
        e++;
    break;
    case ('f'):
        f++;
    break;
    case ('g'):
        g++;
    break;
    case ('h'):
        h++;
    break;
    case ('i'):
        i++;
    break;
    case ('j'):
        j++;
    break;
    case ('k'):
        k++;
    break;
    case ('l'):
        l++;
    break;
    case ('m'):
        m++;
    break;
    case ('n'):
        n++;
    break;
    case ('o'):
        o++;
    break;
    case ('p'):
        p++;
    break;
    case ('q'):
        q++;
    break;
    case ('r'):
        r++;
    break;
    case ('s'):
        s++;
    break;
    case ('t'):
        t++;
    break;
    case ('u'):
        u++;
    break;
    case ('v'):
        v++;
    break;
    case ('w'):
        w++;
    break;
    case ('x'):
        x++;
    break;
    case ('y'):
        y++;
    break;
    case ('z'):
        z++;
    break;
        }
    }
    }

    System.out.println("A:" + a + "\n" + "B:" + b + "\n" +"C:" + c + "\n" +"D:" + d + "\n" +"E:" + e + "\n" +"F:" + f + "\n" +"G:" + g + "\n" +"H:" + h + "\n" +"I:" + i+ "\n" +"J:" + j + "\n" +"K:" + k + "\n" +"L:" + l + "\n" +"M:" + m + "\n" +"N:" + n + "\n" +"O:" + o + "\n" +"P:" + p + "\n" +"Q:" + q + "\n" +"R:" + r+ "\n" +"S:" + s + "\n" +"T:" + t + "\n" +"U:" + u + "\n" +"V:" + v + "\n" +"W:" + w + "\n" +"X:" + x + "\n" +"Y:" + y + "\n" +"Z:" + z + "\n" + z);
    }

}

正如您所看到的,对于这样一个简单的程序来说它非常长,并且毫无疑问有更短的方法来编写它。有人可以告诉我在哪里可以压缩程序以使其更短、更高效。

最佳答案

怎么样

int[] count = new int[26];

你可以做到

for(char c: string.toCharArray())
    count[c - 'a']++;

关于java - 有更简单有效的方法来做到这一点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21343807/

相关文章:

java - 访问请求范围的 bean

java - 将对象元素按有序位置插入数组,而不使用 Java 中的排序算法

java - 静态和非静态同步方法的并发执行有问题吗?

java - JBoss中的类加载顺序

java - 待定 Intent 不是打开 Activity

java - 如何创建由重复多次的相同字符组成的长度字符串?

java - 使用 JPA EntityManager 批量插入

java - 使用 stringtokenizer 来统计单词问题

java - JSF 页面的命名约定

java - 无法立即停止 MIDI 序列