嘿伙计们,这是为了完成我的作业。我的老师很快就开始上课了。这是我用java编写的第四个程序,我正在寻找一些建议。我需要找到一个数字的大概sqrt到我的程序中定义的EPSILON错误。但是,这需要使用挤压定理来完成,并不断更新我的界限。在java中,当整个使用变量时,如何更新变量值?请记住,我的教授尚未返回值,所以我认为他不打算让我们使用它们。请记住,我是新手,但我有一个开放的心态。
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final double EPSILON = .0000000001;
System.out.print("Enter a number to find its square root -> ");
double number = sc.nextDouble();
double low = 0;
double high = 0;
double midPoint = (low+high)/2;
high = number;
double midPointSqr = midPoint*midPoint;
if (number < 0) {
System.out.println("NaN");
} else {
while ((Math.abs(midPointSqr - number)) > EPSILON) {
{
if (number <= 1) {
low = 0;
if (midPointSqr > number)
{
midPoint = (high+low)/2;
high = high/2;
System.out.printf("%.6f, %.6f\n", low, high);
}
else
{
midPoint = (high+low)/2;
low = high/2;
System.out.printf("%.6f, %.6f\n", low, high);
}
} else {
low = 1;
if (midPointSqr > number)
{
midPoint = (high+low)/2;
high = high/2;
System.out.printf("%.6f, %.6f\n", low, high);
}
else
{
midPoint = (high+low)/2;
low = high/2;
System.out.printf("%.6f, %.6f\n", low, high);
}
}
}
}
}
}
}
答案 0 :(得分:0)
每当更新中点变量时,您都需要更新midPointSqr变量。所以只要你有像
这样的赋值语句midPoint = <something>;
你应该在此之后重新开始你的广场:
midPointSqr = midPoint * midPoint
另一个替代方案是在任何地方使用函数而不是使用midPointSqr变量。
double getSqr(double value){
return value* value;
}
所以,当您使用midPointSqr变量时,请使用以下方法代码替换它:
getSqr(midPoint)