gpt4 book ai didi

java - 使用 while 循环和 if 语句获取随机生成的数字中每个数字的频率

转载 作者:行者123 更新时间:2023-12-01 22:56:37 25 4
gpt4 key购买 nike

这是用java编写的。我正在尝试编写一种随机生成数字 1000000 - 2000000 的方法,然后获取每个数字的频率。我们不能使用数组或 for 循环。

例如,如果数字是 1880500,则输出将为:(1, 1), (8, 2), (5, 1), (0, 3)。

但是,我的输出如下所示: (1, 1), (8, 2), (8, 1), (0, 3), (0, 2), (5, 1), (0, 1).

所以我的问题是,如果该数字已经打印过,我不知道如何阻止该数字打印两次。谢谢

这是我的方法代码:

      int num = 1000000 + (int)(Math.random() * (2000000 - 1000000 + 1));
System.out.println("The generated number is: " + num);
int oneDigit = num % 10;

while (num > 0) {
int oneDigitCount = 0;
int num2 = num;
while (num2 > 0) {
if (num2 % 10 == oneDigit) {
oneDigitCount++;
}
num2 /= 10;
}
if (num < 10 && oneDigit != newDigit) {
System.out.printf("(%d, %d)", oneDigit, oneDigitCount);
}
else {
System.out.printf("(%d, %d), ", oneDigit, oneDigitCount);
}
num /= 10;
oneDigit = num % 10;

最佳答案

您当前正在解析您的号码 n 次,其中 n 是位数。因此,如果数字是 1880500,则计算 1880500 中 0 的数量,然后计算 188050 中 0 的数量,然后计算 18805 中 5 的数量,然后计算 1880 中 0 的数量等

由于您显然无法使用数组、映射或 for 循环,因此我们需要一种稍微不同的方法。幸运的是,由于我们正在处理一组已知的数字,因此我们可以反转这里的逻辑。我们可以使用 while 循环来循环访问数字 0 - 9,并在原始数字中查找它们,而不是从数字本身获取数字(这最终导致重复)。

    int num = 1000000 + (int) (Math.random() * (2000000 - 1000000 + 1));
System.out.println("The generated number is: " + num);

int i = 0;
while (i < 10) {
int count = 0;
int temp = num;
while (temp > 0) {
int digit = temp % 10;
if (digit == i) {
count++;
}
temp /= 10;
}

if (count > 0) {
System.out.printf("(%d, %d), ", i, count);
}
i++;
}

您会注意到这本质上与 for 循环相同。大多数情况下,循环就是循环,区分 while 和 for 循环只是为了方便。

关于java - 使用 while 循环和 if 语句获取随机生成的数字中每个数字的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58437287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com