Java 确定方法是年龄==到当前年份的人的平方
我试图写一个方法,确定一个人年龄的平方是否等于当前年份。例如,一名男子在1849年43岁,而43的平方是1849年。 下面是我的代码,但我不知道为什么我的例外不起作用,因为假设没有人能活过123年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
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是一个整数。
}
因为他想知道平方中的人的年龄是否是当前年份?@RoflcoptrMath.pow
是一种缓慢的方法,当你将某个双倍幂提升到一个可能是整数,也可能不是整数的幂时,它是一种近似方法。如果你只需要整数的平方,就可以将数字本身相乘。这就是你将某个整数平方的方法n Java.*
运算符只进行乘法,duh;p@wds好的,我看你可以代替Math.pow(2岁)使用年龄*策略设计是要求用户输入用户的出生日期,然后将出生日期和年龄分别加1,然后计算年龄的平方并检查其是否等于当前年份,我的方法目前有效,但例外情况不起作用。出生日期应在当前年份-123和当前年份之间+123如果你假设没有人能活过123岁,那么你的while就错了:你转到age=123
,但是你转到age=age+1
,那么年龄将是124岁。你的代码有点转到11:)我不确定你为什么选择这个方法的名称为isAlive。@nanne我已经将它改为age