Java 确定方法是年龄==到当前年份的人的平方

Java 确定方法是年龄==到当前年份的人的平方,java,Java,我试图写一个方法,确定一个人年龄的平方是否等于当前年份。例如,一名男子在1849年43岁,而43的平方是1849年。 下面是我的代码,但我不知道为什么我的例外不起作用,因为假设没有人能活过123年 public Boolean isAlive(int y){ assert( y>=1888 && y<=2134); int age=0; while(age<=123){ y=y+1; age=a

我试图写一个方法,确定一个人年龄的平方是否等于当前年份。例如,一名男子在1849年43岁,而43的平方是1849年。 下面是我的代码,但我不知道为什么我的例外不起作用,因为假设没有人能活过123年

 public Boolean isAlive(int y){
     assert( y>=1888 && y<=2134);
     int age=0;
     while(age<=123){
         y=y+1;
         age=age+1;
         if(age*age==y){
             int c=age;
             return true;
             }
         }
      return false;
   }
public Boolean isAlive(int y){

assert(y>=1888&&y您可以使它更容易:

 public boolean isAlive(int age){
    int year = Calendar.getInstance().get(Calendar.YEAR);
    return year == age * age;   
 }

我不明白你们的代码,但根据描述,我想你们应该检查一下某人年龄的平方是否等于当前年份

  • 不要使用断言
  • 计算年龄的平方
  • 获取当前年度
  • 如果2==3,则进行比较

  • 您试图解决的问题似乎是

    y + n = n^2
    
    其中,
    y
    是起始年份,
    n
    是年龄,两者都必须是正整数

    重新安排这是

    n = (sqrt(1 + 4 * y) + 1)/2;
    
    e、 g

    当y=1806,n=43,n+y=n*n=1849

    当y=1980,n=45,n+y=2025,n*n=2025

    这样你就可以写作了

    public boolean squareAgeIfBorn(int year) {
       double n = (Math.sqrt(1 + 4 * year) + 1) / 2;
       return Math.abs(n - (long) n) < 1e-9; // i.e. if n is a whole number.
    }
    
    public boolean squageifborn(整数年){
    双n=(数学sqrt(1+4*年)+1)/2;
    返回Math.abs(n-(long)n)<1e-9;//即如果n是一个整数。
    }
    
    因为他想知道平方中的人的年龄是否是当前年份?@Roflcoptr
    Math.pow
    是一种缓慢的方法,当你将某个双倍幂提升到一个可能是整数,也可能不是整数的幂时,它是一种近似方法。如果你只需要整数的平方,就可以将数字本身相乘。这就是你将某个整数平方的方法n Java.
    *
    运算符只进行乘法,duh;p@wds好的,我看你可以代替Math.pow(2岁)使用年龄*策略设计是要求用户输入用户的出生日期,然后将出生日期和年龄分别加1,然后计算年龄的平方并检查其是否等于当前年份,我的方法目前有效,但例外情况不起作用。出生日期应在当前年份-123和当前年份之间+123如果你假设没有人能活过123岁,那么你的while就错了:你转到
    age=123
    ,但是你转到
    age=age+1
    ,那么年龄将是124岁。你的代码有点转到11:)我不确定你为什么选择这个方法的名称为isAlive。@nanne我已经将它改为age