如何从命令行参数计算字符串中的字符出现次数 - Java

时间:2014-03-05 13:07:24

标签: java

我需要计算在命令行中传递的字符串中字符的出现次数。例如,如果我们传递一个句子“面包是湿的”,并且我们正在寻找字符“e”的出现,程序应该输出每个单词的出现“e”:1 1 0 1.

我是Java新手,我提出的不起作用:

    public static void main(String[] args) {
        int count = 0;
        for (int i = 0; i < args.length; i++) {
            // System.out.println(args[i]+" ");
            if (args[i].charAt(i) == 'e') {
                count++;

            }
            System.out.println(count);
        }
    }

显然,args [i] .charAt(i)在这里是错误的,因为它看起来像是第一个单词的第一个字母。但是,args.charAt(i)甚至不起作用。 我不知道如何解决这个问题并获得正确的输出。

4 个答案:

答案 0 :(得分:3)

要解决它,你需要有两个循环。

  • 一个用于遍历args数组
  • 第二个遍历参数
  • 中的字符

你现在正在做的事情是i代表参数args[i]的位置(好),并且使用相同的i尝试获取字符charAt(i) (错)。

换句话说,对于第一个参数,你只检查第一个字符,第二个,第二个,...,对于n参数,你检查该参数的n个字符。

为避免将来此类问题尝试使用更多功能,功能应侧重于单一问题

public static void countCharOccurence(String input, char search) {
    int cound = 0;
    for(int i=0; i< input.length; i++){
      if(search == input.getAt(i) {
        count++;
      }
    }
}

尝试在main方法中添加它。祝你好运。

答案 1 :(得分:0)

类似的东西(第一个循环遍历arguments数组,第二个循环遍历特定参数):

int count = 0;
for(int i=0; i<args.length; i++ ){
    count = 0;
    for (int j = 0; j<args[i].length();j++){
        if (args[i].charAt(j) == 'e'){
        count++;

        }
    }
    System.out.println(count+" ");
}

答案 2 :(得分:0)

你需要一个循环遍历args [i]

的第二个循环
public static void main (String[] args) {
        int count = 0;
        for(int i=0; i<args.length; i++ )
    {
        int count = 0;
        //System.out.println(args[i]+" ");
        String test = args[i];
        for(int j=0;j<test.length();j++)
        {
            if (args[i].charAt(j) == 'e'){
                count++;
            }


        }
        System.out.println(count);

    }

            }

答案 3 :(得分:0)

你需要这样做......

       public static void main(String ar[]) 
        for(String a:ar)
         {
        char b[] = a.toCharArray();

           for(char c:b)
           {
               if(c='e')
                {
                        // do some code
                }
            }  

            }  

}