java - java中的近似平方根
问题描述
我正在编写的程序需要读取用户输入的双精度数,然后读取输入的猜测值是第一个的平方根,然后使用巴比伦方法找出平方根是多少第一个数字(基本上它使用最后的猜测来制作一个新的数字,然后重复这个直到找出正确的数字)nextGuess + (lastGuess + (num / lastGuess))/2
问题是,不仅我不能在代码的任何部分输入一个双精度数而不产生错误(如下所示),而且由于某种原因我不能使方程式工作,即使我已经检查过数字一百万次。
这是我正在使用的 2 个类的代码: Main Class
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please input a number:");
double num = in.nextInt();
System.out.println("Input your guess for square root of the number:");
double lastGuess = in.nextInt();
Sqrtclass met = new Sqrtclass();
double e = 0.001;
met.set_guess(num, lastGuess);
for (int i=1; i<=1000; i=i+1){
if(met.nextGuess - lastGuess >= e){
System.out.println("The number " + met.nextGuess + " couldn't be precise enough. Please input this number in the box below.");
lastGuess = in.nextInt();
}
else if(met.nextGuess - lastGuess <= e){
System.out.println("The square root of " + num + " is " + met.nextGuess);
i = 1001;
break;
}
}
}
}
第二个类或Sqrtclass.java:
class Sqrtclass{
static double nextGuess;
public static double set_guess(double lastGuess, double num){
nextGuess = (lastGuess + num / lastGuess)/2;
return nextGuess;
}
}
这是我说的错误,当我在程序执行期间输入带小数的数字时出现:
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at Main.main(Main.java:15)
我的错误到底是什么?我想不出很多我还没有尝试过的事情。
解决方案
我解决了问题。基本上有两个。
第一次是当我打电话给其他班级的双打时。我met.set_guess(num, lastGuess);
在主课和第二课中使用public static double set_guess(double lastGuess, double num)
. 这是,我正在切换双打的顺序。
第二个也在主类中,发生的事情是我将 for 循环放在调用公共静态双精度的构造函数之前。我的意思是:
是这样的:
met.set_guess(num, lastGuess);
for (int i=1; i<=1000; i=i+1){
什么时候应该是这样的:
for (int i=1; i<=1000; i=i+1){
met.set_guess(num, lastGuess);
现在该程序运行良好。感谢所有帮助过的人。
推荐阅读
- sql - 使用 T-SQL 窗口函数从 1 分钟数据中检索 5 分钟平均值
- powerbi - 在 powerBI 中推送数据集
- reporting - COGNOS:基于其他维度条件的交叉表计算
- arrays - 如何以重复的方式从matlab中的数组中选择一个随机数?
- vba - 将电子邮件从共享收件箱移动到子文件夹
- javascript - 如何管理 REACTIVE Angular-form 项目中的选择选项数组?
- jboss - Jboss 7 部署错误:WFLYCTL0412:未安装的必需服务和 WFLYCTL0180:缺少/不可用依赖项的服务
- google-cloud-platform - 我可以在 nodejs 中安排重试云功能吗?
- laravel - 如何使用 Laravel Cashier 通过 Braintree_id 或 subscription_id 取消 Braintree 订阅
- jenkins - 詹金斯卡在重新启动奴隶代理