【问题标题】:Finding the sqrt of a number查找数字的 sqrt
【发布时间】:2018-11-02 09:54:28
【问题描述】:

所以我只是想写一个程序,让用户输入一个大于 10 的数字,并找到这个数字的 sqrt。但是我应该多次进行平方根运算,以使输入的数字的sqrt小于4。之后,我应该打印数字sqrt的初始值和平方根运算的次数完毕。我似乎没有发现我编写的程序有什么问题。你能帮我吗?

   public static void main(String[] args) {
   int counter = 1 ; 
   double sqrt  , sqrt1 , n ; 



   Scanner input = new Scanner (System.in);
   do{
       System.out.print("Enter any number : ");
       n = input.nextInt();

   }while(n < 10);

   sqrt = Math.sqrt(n);

 while (sqrt > 4){
     sqrt1 = Math.sqrt(sqrt);
     counter++ ;
 }

   System.out.println("The square root of the entered number is : " + sqrt);
   System.out.println("The square root operation was made : " + counter + " time(s)");


}

}

【问题讨论】:

  • 提示:变量sqrt在初始设置后是否改变值?
  • 使用调试器单步调试代码应该是解决此问题的最快方法。

标签: java loops while-loop do-while square-root


【解决方案1】:

看看这个循环:

while (sqrt > 4){
    sqrt1 = Math.sqrt(sqrt);
    counter++ ;
}

您正在检查sqrt 是否大于4,但您没有在循环内修改sqrt 的值,因此sqrt &gt; 4 将永远保持true,并且循环将永远继续迭代.

【讨论】:

  • 这就是为什么你永远不应该将你的变量命名为sqrtsqrt1,它很容易出错并且很难调试。而不是将 sqrt1 重命名为有意义的名称,例如 returnedSqrt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多