我有一个char数组(让我们说大小为4)。我正在使用:
将其转换为字符串String str = String.valueOf(cf); // where cf is the char array of size 4.
此字符串可以包含01
或11
或001
或011
等。
现在,我需要计算这个字符串中的位数。但每次我计算数字位数(最好是在Java中)时,它会显示4作为结果(可能是由于大小为4)。我该如何计算。根据输入字符串的数字?
示例:如果输入为001,则应将o / p设为3,依此类推。
这是编码部分:
static long solve(int k, long n)
{
// System.out.println("Entered Solve function");
char[] c = new char[4];
long sum = 0;
char[] cf = {};
for(long i=2;i<=n;i++)
{
cf = fromDeci(c, k, i);
String str = String.valueOf(cf);
//System.out.println(snew);
sum = sum + str.length() ;
}
return sum;
}
答案 0 :(得分:3)
您可以使用java 8中的Stream API, ONE-LINE 中的解决方案:
....
答案 1 :(得分:1)
使用正则表达式非常容易:
String test = "a23sf1";
int count = 0;
Pattern pattern = Pattern.compile("[0-9]");
Matcher matcher = pattern.matcher(test);
while (matcher.find()) {
count++;
}
System.out.println(count);
答案 2 :(得分:1)
您可以通过与数字字符进行简单比较来验证字符是否为数字。
private int countDigits(char[] cf) {
int digitCt = 0;
for (char c : cf) {
if ((c >= '0') && (c <= '9')) digitCt++;
}
return digitCt;
}
答案 3 :(得分:0)