Java程序不返回Int

时间:2015-08-18 05:04:55

标签: java

我正在尝试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(); 
  }
}

3 个答案:

答案 0 :(得分:4)

我根本不会使用字符串算术。此外,您不需要再次检查号码的长度,因为您知道它必须是 System.setProperty("file.encoding", "ASCII"); System.out.println(Charset.defaultCharset()); ,您刚刚摆脱了while循环。

如果使用字符串处理,它不仅更长,而且速度更慢。我还会使用1而不是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));
}

答案 1 :(得分:0)

如果该函数应返回某些内容,则必须始终至少有一个返回语句之外的任何if / else块。
不只是在Java中,而是任何类似的强类型语言。

if(length(product==1)) blockreturn -99999999或某些错误代码之后,如果在正常操作期间不应该返回

答案 2 :(得分:0)

while循环仅在length(product)等于1时终止。因此,只需删除numIterations条件即可返回if