1

当输入值太高时,我试图让我的程序输出错误代码,但我只能让它在终端窗口中显示错误消息,而不是在方法返回中。这是代码:

public class AckermannAdvanced {
   
   public static long ack (long m, long n) {
      long ans;

      System.out.print("\f");
      if (m > 3 && n > 1) {
         System.out.print("Input values are too high");
      } else {
         if (m == 2)      ans = (2*n)+3;
         else if (m == 1) ans = n+2;
         else if (m == 0) ans = n+1;
         else if (n == 0) ans = ack(m-1, 1);
         else             ans = ack(m-1, ack(m, n-1));
         System.out.print(ans);
         return(ans);
      } 
      return 0;
   }
}
4

1 回答 1

0

您可以将 aLong与大写 L 一起使用,然后它是一个表示 a 的对象long。一旦你返回一个对象,你就可以返回null。Java在返回时会自动将a转换long为a Long,所以其他的返回应该是一样的。所以

    public static Long ack(long m, long n) //...
    //...
    if (m > 3 && n > 1) {
        return null;
    }

或者你可以让它返回一个OptionalLong

public static OptionalLong ack(long m, long n) //...
//No result
return OptionalLong.empty();
//Result
return OptionalLong.of(21438999L);

https://www.geeksforgeeks.org/optionallong-orelselong-method-in-java-with-examples/

于 2021-06-21T20:25:39.130 回答