我正在尝试制作一个计算重要数字的程序,我差不多完成了最后一件事,我完全陷入困境,我无法弄清楚如何计算非零数字之间的零点这里是我的代码:
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;
}
}
答案 0 :(得分:2)
您不应该将“Integer”等关键字用于变量标识符。
我有一些挥之不去的问题,但我只是在字符串上使用Java的内置 split()函数,并使用正则表达式将字符串拆分为重要数字(忽略结束和前导零)。然后返回字符串长度的总和。这是纯整数的代码。
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+$
),但前提是它们前面没有小数((~\\.)
)。
\\.
表示拆分小数点后面的任何内容。
答案 1 :(得分:0)
当您找到零时,启动单独的零计数。每次找到零时,继续递增零计数器而不是主计数器。如果找到非零数字,则将零计数值添加到主计数器,并将零计数器设置为0(重新启动它),以及为非零数字正常递增主计数器。相反,如果到达数字数组的末尾,则忽略零计数器。
因此,只有当零不是尾随零时才会将零计数器添加到主计数器,因此,sigfigs。
答案 2 :(得分:0)
以下代码将找出字符串中的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);