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