Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定年龄平方是否等于当前年份的方法_Java - Fatal编程技术网

Java 确定年龄平方是否等于当前年份的方法

Java 确定年龄平方是否等于当前年份的方法,java,Java,我试图写一个方法,确定一个人年龄的平方是否等于当前年份。例如,一名男子在1849年43岁,而43的平方是1849年。下面是我的代码,但我不知道为什么我的例外不起作用,因为假设没有人能活过123年 public class Augustus { private int year; private final static int RANGEOFLIVING=124; public static void main(String[] args) {

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

 public class Augustus 
 {
    private int year;
    private final static  int RANGEOFLIVING=124;

    public static void main(String[] args) 
    {
       Augustus y = new Augustus(1806); 
       System.out.println(y.isAlive());
    }

    public Augustus(int n)
    {
        year= n;
    }

    public int SquareOfAge(int z)
    {
       return z * z ;
    }

   public boolean isAlive()
   {
       for(int i=1;i<RANGEOFLIVING;i++)
         if (SquareOfAge(i)!=year++)
               return false;
          return true;


   }
}
公共类奥古斯都 { 私人国际年; 私有最终静态int生存范围=124; 公共静态void main(字符串[]args) { 奥古斯都y=新奥古斯都(1806年); System.out.println(y.isAlive()); } 公共奥古斯都(国际北) { 年份=n; } 公共整数平方英尺(整数z) { 返回z*z; } 公共生活 {
对于(int i=1;i您不希望在循环外返回false。这将在第一次迭代时中止。您希望继续运行循环,直到找到匹配的年龄/年份组合,然后返回true。

将测试分开,查看它们是否存在,以及当前年份是否为年龄的平方。 例如:

private boolean isAlive(int age){
  return age < RANGEOFLIVING;
}

private boolean isSquare(int age){
  return isAlive(age) && year == age*age;
}
private boolean isAlive(int-age){
回归年龄<生存范围;
}
私有布尔isSquare(整数年龄){
返回isAlive(年龄)和&year==年龄*年龄;
}
除非这不是你想要的?这正是我从你的问题描述中收集的。不知道你为什么需要循环?
但我可能误解了这个问题?

我有一段时间没有使用Java了,所以如果我听起来很愚蠢,请原谅我

看起来您正在使用SquareOfAge()作为静态方法,因此它应该有一个静态声明,如下所示:

public static int SquareOfAge(int z)
{
   return z * z ;
}

或用作
本页的平方(i)
。然而,这也是一个糟糕的编程,因为你无缘无故地调用了
这个
。这看起来像是家庭作业,所以我就到此为止。

你有什么例外?还有,这是家庭作业吗?你为什么不编辑你之前的问题?还有,这是家庭作业吗?一些随机评论:看起来你只是想看看你的年龄uared,等于某一年。如果它是一个整数,小于124,则返回true不是更好吗?还奇怪为什么您将SquareOfAge作为一个公共方法。似乎这是一个辅助方法,不需要是公共的。是的,如果循环结束时没有匹配项,则在结束时返回false。@thi我已经试过了,但是仍然得到了错误的答案。你能进一步解释一下你的意思吗?我也有点怀疑year++是否正确工作,或者你是否可能有一年的假期。添加一些调试输出,看看正在评估的年龄/年份组合是否符合你的期望。