Java 打印数字中特定数字出现的次数
返回类型为void,并且有一个输入参数,我尝试使用while循环来打印输入整数中某个数字的数量 例如int i=32001;然后我想知道int中有多少个0,输出是2,因为int中只有两个0 由于某种原因,我下面的代码只输出0,我不知道为什么。有人能帮忙修理吗 请不要使用任何电动工具或某些方法为您完成工作,您可以使用for-loop或while-loopJava 打印数字中特定数字出现的次数,java,if-statement,while-loop,Java,If Statement,While Loop,返回类型为void,并且有一个输入参数,我尝试使用while循环来打印输入整数中某个数字的数量 例如int i=32001;然后我想知道int中有多少个0,输出是2,因为int中只有两个0 由于某种原因,我下面的代码只输出0,我不知道为什么。有人能帮忙修理吗 请不要使用任何电动工具或某些方法为您完成工作,您可以使用for-loop或while-loop public class loopPrr { public void howMany0(int i){
public class loopPrr
{
public void howMany0(int i){
int n = 0;
int howmany = 0;
char z = '0';
while(i <= 0){
++i;
if(i == z){
howmany++;
}
}
System.out.println(howmany);
}
public static void main(String args[]){
loopPrr n = new loopPrr();
n.howMany0(32001);
}
}
请尝试下一个代码。逻辑非常简单,执行mod 10以获得最正确的数字,如果是目标,则对其进行计数,除以10以删除最后一个数字,然后重复
public void countNumber(int n, final int target) {
int count = 0;
if (n == target) {
count = 1;
}
else {
while (n != 0) {
if (n % 10 == target)
count++;
n /= 10;
}
}
System.out.println(count);
}
或者,您可以将数字拆分为一个字符数组,并查看有多少个零:
public void howMany0(int i) {
if (i == 0) return 1;
String str = String.valueOf(i);
char[] digits = str.toCharArray();
int howmany = 0;
char z = '0';
for (char c : digits) {
if (c == z) {
howmany++;
}
}
return howmany;
}
获取所有数字频率计数的简单方法如下:
int[] freq = new int[10];
int numb = 2829921;
while (numb > 0) {
// use the digit as the index and bump the count
freq[numb % 10]++;
numb /= 10;
}
for (int i = 0; i < 10; i++) {
// skip empty slots
if (freq[i] > 0) {
int k = freq[i];
System.out
.println(k + " " + i + ((k > 1) ? "'s" : ""));
}
}
字符0永远不会等同于整数0如果要检查字符“0”是否在数字中,则需要将数字转换为字符串。字符串包含字符;ints不是。@sleepToken这不是真的,除非你指的是字符“0”。首先,你需要后退一步,思考一下基本的学校数学和十进制算术,以及如何使用它们从数字中获取一个数字,以及如何在没有该数字的情况下获取数字的其余部分。值得调试以观察发生了什么。是32001吗?我从没想过用它除以10得到下一组数字。感谢您分享您的想法和方法。我已经更新了答案,添加了一个目标参数,这样您就可以将该方法与其他数字一起使用,而不仅仅是零。此解决方案效率不高,因为它需要内存分配,再加上2个过程。您显然没有抓住要点。它需要一次通过才能获得计数。当然,你必须把它们打印出来。但关键是它能找到所有数字的计数。如果你的答案是打印所有不同数字的计数,那么你的答案是正确的,但问题是关于一个特定的数字,而不是每个数字的计数。我知道。我提出了一个更普遍的解决方案。您看到我的第一条语句了吗?这个解决方案需要额外的分配,因为它必须转换为字符串,然后用它创建一个数组。无效。@API_1024是的,但您可以重构该函数,并使用它来查找足够大的数字中的零或任何其他数字的个数,这些数字可以存储为整数,例如数百位数字,存储为字符串。另外,我还提供了一个替代解决方案,也许用例不需要我的解决方案。谢谢你的解释,我现在明白了。我想我可以用你的方法来解决一些特定的leetcode和hackerrank问题。谢谢分享。
1 1
3 2's
1 8
2 9's