Java平方根计算器?

Java平方根计算器?,java,square-root,Java,Square Root,好的,我是java的初学者,通过网站和书籍自学。我尝试了一个简单的平方根计算器,它有一个for循环和一个while循环,我在下面介绍了我所尝试的。不幸的是,当我输入一个数字时,我所有的代码都是终止的。任何帮助都将不胜感激 import java.util.Scanner; public class The2RootProdject { public static void main(String args[]) { Scanner input = new Scanne

好的,我是java的初学者,通过网站和书籍自学。我尝试了一个简单的平方根计算器,它有一个for循环和一个while循环,我在下面介绍了我所尝试的。不幸的是,当我输入一个数字时,我所有的代码都是终止的。任何帮助都将不胜感激

import java.util.Scanner;

public class The2RootProdject {
    public static void main(String args[]) {

        Scanner input = new Scanner(System.in);
        double rootIt = input.nextDouble();
        double dummy = 0.0000000;

        while (dummy != dummy * dummy) {
            dummy += 0.0000001;
            if (rootIt == dummy * dummy) {
                System.out.println("the squar root of " + rootIt + " is "
                        + (dummy * dummy));
            }

        }

    }
}

这里有几个问题:

1个逻辑错误:0==0*0


我认为while条件应该是=

while(rootIt != dummy * dummy) {} 

只有将dummy初始化为1时,当前条件才会为true;但我不认为这就是你想要的

尝试使用此使用牛顿迭代的算法:

import java.util.Scanner;

public class Main
{
    public static void main(String args[])
    {
        double number, t, squareRoot;
        Scanner input = new Scanner(System.in);
        number = input.nextDouble();
        squareRoot = number / 2;
        do
        {
            t = squareRoot;
            squareRoot = (t + (number / t)) / 2;
        }
        while ((t - squareRoot) != 0);

        System.out.println(squareRoot);
    }
}
牛顿迭代是一种通过递推方程计算数字平方根的算法:
Xn+1=Xn+number/Xn/2

而0!=0*0不会被执行,对吗?一个数字几乎永远不会等于它自身乘以它自身,除非我遗漏了什么。这将导致循环立即退出。哦,0等于0*0,因此永远不会进入while循环。dummy!=dummy*dummy应该是rootIt!=整个算法不是一个好主意。也许你应该学会自己使用调试器来发现这样的问题。你的输入不太可能有一个有理平方根。考虑检查ROOTITE是否接近哑*哑,而不是完全相等。谢谢帮助!顺便说一句,我是java新手,“do”是做什么的?