繁体   English   中英

编写非静态方法作为静态方法

[英]Writing a non-static method as a static method

我正在尝试将此方法编写为静态方法,但是我不完全了解静态方法如何通过它们而不创建对象来使用。

这是我要转换的方法

public void process(String str)
{
    for (int i=0; i<str.length(); i++){
        char letter = str.charAt(i);
        int index = Character.toLowerCase(letter-'a');
        if (index>=0 && index<26){
            counts[index]++;
        }
    }
}

该方法只需要一个字符串,并记录每个字母在字符串中出现的次数

我试图将此写为静态方法,但我有此方法存根

public static LetterCounter buildCounter(String str)
{

}

由于这是一项学习练习,因此我不会编写任何代码,而是描述需要完成的工作:

  1. 创建一个新的LetterCounter实例
  2. 在其上调用实例方法process ,传递您在buildCounter获得的str
  3. 返回您在步骤1中创建的LetterCounter实例。

大功告成!

您当前的代码将要求counts []也声明为静态,这意味着只有一个counts [],并且每次调用MyClass.process(“ blah”)都会增加类变量counts [index]

我正在猜测,但是我想您想做的是创建一个静态的“实用程序”函数来为传入的字符串中的各个字符返回一个计数数组?因此类似于此(未经测试的)代码,那么您将调用类似于MyUtilClass.process(“ xxyz”);在这种情况下,“静态”表示该进程没有与对象关联,它更像是“函数”或“子例程”

public static int[] process(String str) {
    int[] counts = new int[25];
    for (int i=0; i<str.length(); i++){
        char letter = str.charAt(i);
        int index = Character.toLowerCase(letter-'a');
        if (index>=0 && index<26){
            counts[index]++;
        }
    }
 return counts;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM