繁体   English   中英

如何计算数组的每个字符串中的位数?

[英]How do I count how many digits are in every string of an array?

指令用于计算数组的每个字符串中的位数,并将其分配给numberDigits。

我在这里做错了什么?

public void computeStatistics(String []strings){    
    numberDigits = 0;
    for(String s : strings){
        for(int i : s.toCharArray()){
            if(i >= 0 || i <= 2)
                numberDigits++;
        }
    }
}

不确定我是否正确理解了您的问题,您是否在计算字符串数组中的位数? public int computeStatistics(String []strings){ int numberDigits = 0; for(String s : strings){ s = s.replaceAll("\\D+",""); numberDigits = numberDigits + s.length(); } return numberDigits; }

我假设您的字符串是字母数字。 您的条件是否错误。 char数据类型具有其相应ASCII值的整数表示。 因此,将char a ='A'转换为int时,实际上存储为65。因此,将要迭代的数组中存储的char'0'存储在i中,存储为i。48。您正在检查0到9之间的ascii代码和因此,此代码将无法正常工作。 如果条件为

if(i>=48 && i<=57) 

或者,我发现一个好的常规策略是将char保留为char。

for(char ch:s.toCharArrat())
    if(ch>='0' && ch<='9')

这样,您就不必考虑ascii。 要将char'0'转换为int,请执行以下操作。

int i = (int)ch - (int)'0';

这将给出相应的整数。

或者,由于总位数很重要,因此可以将所有字符串连接为单个字符串,并可以检查每个字符是否为数字。

public  void computeStatistics(String[] strings) {

    numberDigits = 0;
    //Converting all strings in array to single string 
    String cmbStr = Arrays.toString(strings);

    for (Character c : cmbStr.toCharArray()) {
        //checking each character is digit
        if (Character.isDigit(c))
            numberDigits++;
    }
}

暂无
暂无

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

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