【问题标题】:How to count character occurrences in a string from command line arguments - Java如何从命令行参数计算字符串中出现的字符 - Java
【发布时间】:2014-03-05 13:07:24
【问题描述】:

我需要计算在命令行中传递的字符串中某个字符的出现次数。例如,如果我们传递一个句子“面包是湿的”,并且我们正在寻找字符“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) 甚至不起作用。 我不确定如何解决这个问题并获得正确的输出。

【问题讨论】:

    标签: java


    【解决方案1】:

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

    • 一个用于遍历 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 方法中添加它。祝你好运。

    【讨论】:

      【解决方案2】:

      类似这样(第一个循环通过参数数组,第二个循环通过特定参数):

      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+" ");
      }
      

      【讨论】:

      • 谢谢@nikis,这真的很有帮助!
      【解决方案3】:

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

             public static void main(String ar[]) 
              for(String a:ar)
               {
              char b[] = a.toCharArray();
      
                 for(char c:b)
                 {
                     if(c='e')
                      {
                              // do some code
                      }
                  }  
      
                  }  
      
      }
      

      【讨论】:

        【解决方案4】:

        你需要第二个循环来遍历 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);
        
            }
        
                    }
        

        【讨论】:

          猜你喜欢
          • 2011-04-29
          • 2012-10-03
          • 1970-01-01
          • 2010-09-21
          • 1970-01-01
          • 2011-06-14
          • 2014-04-24
          相关资源
          最近更新 更多