-5

我需要找到数字 1 在诸如“11100011”之类的字符串中出现的次数,以便我可以使用该计数来执行一些奇偶校验位工作。我想知道是否有人可以告诉我什么方法或如何设置循环来做这样的事情。

public class message
{
    private String parity1;
    private int count;

    public message(String Parity1)
    {
        parity1 = Parity1;
        int count = 0;
    }

    public static int countOnes(String parity1, char 1)
    {
        count = 0; 
        for(int i = 0; i < parity1.length(); i++) {
            if(parity1.charAt(i)==1){
                count++;
            }
        }
        return count;
    }
//...
4

1 回答 1

1

您的比较有问题:

if(parity1.charAt(i)=='1'){//note the quotes; needed to interpret '1' as a char
  count++;
}

注意这个函数签名是错误的:

public static int countOnes(String parity1, char 1)

应该是:

public static int countOnes(String parity1)

那里不需要第二个参数。如果您想传入此参数,请使用:

public static int countOnes(String haystack, char needle)

然后你的比较变成:

if(haystack.charAt(i)==needle){

另请注意,count此方法中声明的内容是错误的。您正在尝试从静态函数中引用对象的成员字段。静态函数不与对象相关联,而是与类相关联。鉴于您不需要任何成员字段,您不妨countcountOnes函数中声明:

public static int countOnes(String parity1) {
  int count = 0;
  //...
}
于 2013-10-10T21:25:59.757 回答