作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一种方法来确定一个人的年龄的平方是否等于当前年份。例如,一名男子在 1849 年 43 岁,43 的平方就是 1849 年。下面是我的代码,但我不知道为什么我的异常(exception)不起作用,因为假设没有人可以活过 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;
}
最佳答案
您试图解决的问题似乎是
y + n = n^2
其中 y
是起始年份,n
是年龄,两者都必须是正整数。
重新排列后是
n = (sqrt(1 + 4 * y) + 1)/2;
例如
当 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.
}
关于java - 确定方法是一个人的年龄==当前年份的平方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5716047/
我是一名优秀的程序员,十分优秀!