计数重要数字java



我正在尝试制作一个计算有效数字的程序,我几乎完成了。最后一件事我完全陷入了困境。我不知道如何计算非零数字之间的零。这是我的代码:

public class Main {
public static void main(String[] args) {
String  Integer = "10010000000";
String Substring = null;
String SubString2 = null;
if(Integer.contains(".")){
Substring = Integer.substring(0,Integer.indexOf("."));
System.out.println(Substring);
SubString2 = Integer.substring(Integer.indexOf(".")+1,Integer.length());
System.out.println(SubString2);
}
char [] array = Integer.toCharArray();
char [] array1 = null;
if(Substring !=null)
array1 = Substring.toCharArray();
char [] array2 = null;
if(SubString2!=null)
array2 = SubString2.toCharArray();
System.out.println(amountofSigFigs(array,array1,array2,Integer));
}
public static int amountofSigFigs(char [] a,char [] a1,char [] a2,String Integer){
int count = 0;
if(a1==null && a2 == null){
for(int i = 0;i<a.length;i++){
if(!(a[i]=='0')){
count++;
}
}
}
else{
for(int i = 0;i<a1.length;i++){
if(!(a[i]=='0')){
count++;
}
}
for(int i = 0;i<a2.length;i++){
count++;
}
}
return count;
}
}

变量标识符不应使用"Integer"等关键字。

我有一些挥之不去的问题,但我只想在字符串上使用Java内置的split()函数,并使用regex将字符串拆分为有效数字(忽略结尾和前导零)。然后返回字符串长度的总和。这是纯整数的代码。

String myint = "000100101111220000020000";
String[] sig_figs = myint.split("(^0+|0+$)");
int sum = 0;
for(String fig : sig_figs)
{
sum += fig.length();
}
return sum;

如果我们包括浮点,还有其他规则需要考虑,例如小数点计数后的零,除非它们前面都是零(3.00有3,0.03有1)。在这种情况下,正则表达式很遗憾变得更加做作,但我会使用类似"(^0+(\.?)0*|(~\.)0+$|\.)"的东西进行拆分

String myfloat = "0.0120";
String [] sig_figs = myfloat.split("(^0+(\.?)0*|(~\.)0+$|\.)");
int sum = 0;
for (String fig : sig_figs)
{
sum += fig.length();
}
return sum;

以下是正则表达式的快速查看:

^0+(\.?)0*表示一个或多个前导零(0+),可选地后跟小数(\.?),然后是零或多个零(0*)。

(~\.)0+$意味着我们希望去掉结束零(0+$),但前提是它们前面没有小数((~\.))。

\.的意思是把剩下的小数点分开。

找到零后,开始单独的零计数。每次找到零时,保持递增零计数器而不是主计数器。如果找到一个非零值,请将零计数值添加到主计数器,并将零计数器设置为0(重新启动它),以及像正常情况下对非零值递增主计数器。相反,如果到达数字数组的末尾,则忽略零计数器。

因此,只有在零不是尾随零的情况下,才能将零计数器添加到主计数器,因此,sigfigs。

以下代码将找出字符串中0的数量

String s = "1234320300340";
int count = 0;
for(int i = 0; i<s.length(); i++){
if(s.charAt(i)== '0'){
count++;
}
}
System.out.println("total no of Zeros = "+ count);

相关内容

  • 没有找到相关文章

最新更新