gpt4 book ai didi

Java 程序不返回 Int

转载 作者:搜寻专家 更新时间:2023-11-01 02:41:31 25 4
gpt4 key购买 nike

我正在尝试在 CodeWars 上编写一个程序,其中一个要求是 persistent() 函数返回一个 int。我无法以始终返回 int 的方式形成它。非常感谢任何帮助!

public class Persist 
{
public static int persistence(int n)
{
int product = n;
int numReiterations = 0;

while (length(product) != 1)
{
product = multiplyDigits(product);
numReiterations++;
}

if (length(product) == 1)
return numReiterations;
}

public static int multiplyDigits(int num)
{
int product = 1;

for (int x=0; x<String.valueOf(num).length(); x++)
{
char numChar = String.valueOf(num).charAt(x);
int numBack = Integer.parseInt(String.valueOf(numChar));
product *= numBack;
}

return product;
}

public static int length(int product)
{
return String.valueOf(product).length();
}
}

最佳答案

我根本不会使用字符串算术。此外,您不需要再次检查数字的长度,因为您知道它必须是 1,您刚刚跳出 while 循环。

如果使用String处理,不仅长而且慢很多。我还会使用 long 而不是 int,因为这样可以用很少的成本获得更大的数字。

public static int persistence(long n) {
int numReiterations = 0;

for (long product = n; !isSingleDigit(product); product = multiplyDigits(product))
numReiterations++;

return numReiterations;
}

public static long multiplyDigits(long num) {
long product = 1;
for (; num > 0; num /= 10)
product *= num % 10;
return product;
}

public static boolean isSingleDigit(long n) {
return n <= 9;
}

public static void main(String[] args) {
System.out.println(persistence(99999999999999999L));
}

打印

3

关于Java 程序不返回 Int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063905/

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