更具表现力的代码

时间:2017-05-07 21:37:17

标签: java logic recompile

是否有更智能的方法来编写此代码,避免在WHILE和IF中重复条件(答案< 200)?

 public class HelloWorld
{
  public static void main(String[] args)
  {
  perfectSquareBetweenFifteenAndTwoHundred();
  }
 }

 void perfectSquareBetweenFifteenAndTwoHundred(){

   int i=1;
   int answer=0;

    while(answer<200)
    {
      answer = i*i;

         if(answer>15 && answer<200)
         {
         System.out.println(i*i);
         }

      i++;
    }
 }
}

感谢。

1 个答案:

答案 0 :(得分:3)

将其写为for循环,并带有适当的边界(从4开始,从4*4=16 > 153*3=9 < 15开始;从14开始,从14*14=196 < 20015*15=225 > 200开始:

for (int i = 4; i <= 14; ++i) {
  System.out.println(i*i);
}

如果你想让数字4和14相对于你的15和200的边界不那么“神奇”,你可以这样编写循环:

for (int i = (int) Math.ceil(Math.sqrt(15)), squared;
     (squared = i * i) < 200; ++i) {
  System.out.println(squared);
}