计算字符方法异常错误?

时间:2013-05-04 16:21:12

标签: java

我已经从这个网站上的一个好答案复制了这个代码(计算一个字符串中的字符并返回计数)并稍微修改它以满足我自己的需要。 但是,我似乎在我的方法中遇到异常错误。

我很感激这里的任何帮助。

请原谅我的代码中的任何错误,因为我还在学习Java。

这是我的代码:

public class CountTheChars {

public static void main(String[] args){

    String s = "Brother drinks brandy.";

    int countR = 0;

    System.out.println(count(s, countR));

}


public static int count(String s, int countR){

    char r = 0;

    for(int i = 0; i<s.length(); i++){

        if(s.charAt(i) == r){

            countR++;

        }

        return countR;

    }

}

}

以下是例外:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method count(String) in the type CountTheChars is not applicable for the arguments (int)

at CountTheChars.main(CountTheChars.java:12)

3 个答案:

答案 0 :(得分:1)

您在方法public static int count(String s, int countR)中缺少一个return语句。目前,如果int,则不会返回s.length() == 0

这应该按预期工作:

public class CountTheChars {

    public static void main(String[] args) {

        String s = "Brother drinks brandy.";

        int countR = 0;

        System.out.println(count(s, countR));

    }

    public static int count(String s, int countR) {

        for (int i = 0; i < s.length(); i++) {

            if (s.charAt(i) == 'r') {

                countR++;

            }

        }

        return countR;

    }

}

答案 1 :(得分:1)

2个问题:

  1. 进行s.charAt(i)比较时的count方法是将单词s中的每个字母与你设置为0的变量r进行比较。这意味着,从技术上讲,你的方法是cOunting句子中出现数字0的次数。这就是为什么你得到0.为了解决这个问题,删除你的r变量并在你的比较中,使s.charAt(i)=='r'作为比较。注意r Rio周围的撇号意味着你特意指的是角色r。

  2. 对于字符串为空的情况,你的count方法没有正确返回,这意味着它的长度为零,这意味着你的for循环没有运行,你的方法将跳过它以及返回你在那里的声明。要解决这个问题,请在方法的最底部移动return语句,这样无论你输入什么字符串,return语句总是会返回(因为你的方法需要返回一个int,因此应该返回)

    < / LI>

答案 2 :(得分:0)

为什么不能使用s.length()来计算String s中的字符数(即字符串的长度)?

编辑:更改为包含“char r的出现次数”。您将该功能称为count(s,countR, r),并在char r = 'a'

中声明char或您想要的任何main
public static int count(String s, int countR, char r){

    countR= 0;
    for(int i = 0; i<s.length(); i++){

        if(s.charAt(i) == r){

            countR++;

        }

        return countR;

    }

}