【问题标题】:Use the Java Math square root method to calculate square roots from 1 to 1,000. Then output the whole numbers only使用 Java Math 平方根方法计算 1 到 1,000 的平方根。然后只输出整数
【发布时间】:2016-06-17 15:14:04
【问题描述】:

使用 Java Math 平方根方法计算 1 到 1,000 的平方根。仅输出整数。不要从计算平方开始,然后打印出该数字的平方根。计算所有平方根并确定它们是否为整数。

我查找了几个似乎围绕解决方案跳舞的答案,但没有一个如此简洁。这是我目前所拥有的。

public class Assignment9
{
    public static void main(String[] args)
    {
        double root = 1;
        double sqrt = Math.sqrt(root);

        do
        {
            if(sqrt % 1 == 0)
            {
                System.out.printf("%.0f\t%.0f%n", root, Math.sqrt(root));
                root++;
            }
        }
        while(root <= 1000);
    }
}

输出打印平方根,但不断四舍五入每个数字。我只想在每个完美正方形中打印一个数字(例如 1 1、4 2、9 3 等)。 我理解这个问题,但每次我运行程序时,我都会得到这个作为我的输出:

     1 1
     2 1
     3 2
     4 2
     5 2
     6 2
     7 3
     8 3
     9 3
     10 3
     ...
     1000 32

【问题讨论】:

  • 你的缩进怎么了?
  • 因为你提前知道什么时候停止,所以使用 for 循环而不是 do..while。您将省去一个增量操作。
  • 虽然这与您的问题无关,但是通过使用 for 和 while 循环比使用 do-while 循环更容易编码。它们使您可以更好地控制如何以更易于使用的格式进行迭代。
  • 查看stackoverflow.com/questions/295579/… 以获取更多资源。

标签: java math perfect-square


【解决方案1】:

您没有更新值 sqrt。它总是只有 1,因此 sqrt % 1 总是 0。

【讨论】:

    【解决方案2】:

    由于这显然是一个作业,我宁愿给出一些提示而不是解决方案。

    需要考虑的要点:

    • 想想sqrt 是如何在循环中更新的。
    • 每当sqrt % 1 == 0 为假时,root 会发生什么(以及它如何影响循环?)

    小点:

    • 你真的需要root 来做替身吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 2019-07-23
      • 2015-12-28
      • 2022-11-14
      • 1970-01-01
      • 2017-04-30
      相关资源
      最近更新 更多