是否有更智能的方法来编写此代码,避免在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++;
}
}
}
感谢。
答案 0 :(得分:3)
将其写为for循环,并带有适当的边界(从4开始,从4*4=16 > 15
和3*3=9 < 15
开始;从14开始,从14*14=196 < 200
和15*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);
}