这是我的第一篇文章,过去 24 小时我一直在搜索谷歌和堆栈溢出,但似乎无法确定我的问题。
我正在创建一个简单的平方根程序。对于输入部分,我启动了一个“while”循环。我需要它来比较两个条件。1. 是输入一个数字 2. 是输入一个超过十的数字。
我成功地创建了原始程序,但是在调试时遇到了一个小问题。当我输入一个不同的大小数或数字时,我会得到一个运行时错误。
我发现我可以使用 BigDecimal() 来解决这个问题。
但是,我现在遇到了一个逻辑错误,无论我搜索多少次互联网都无法解决。
我在 while 循环中使用的两个条件是:
while (!scan.hasNextBigDecimal() || (inputNumberBig.compareTo(SENTINAL)>0))
这将确保有一个 BigDecimal,但不会确保输入的数字超过 10。
这是整个程序
import java.math.BigDecimal;
import java.util.Scanner;
/**
@author Mike
*/
public class SquareRootingWithoutBigDecimal
{
public static void main( String [] args )
{
Scanner scan = new Scanner(System.in);
double inputNumber = 0.00;
double rootedNumber = inputNumber;
BigDecimal inputNumberBig = new BigDecimal(0.00);
BigDecimal SENTINAL = new BigDecimal(10.00);
String garbage;
double garbageD = 0.00;
System.out.println("Please Enter a number to be Square rooted"
+ "\nThe number must be 10 or greater ");
while (!scan.hasNextBigDecimal() || (inputNumberBig.compareTo(SENTINAL)>0))
{
garbage = scan.nextLine();
System.out.println("Please Enter a number to be Square rooted"
+ "\nThe number must be 10 or greater ");
}
inputNumberBig = scan.nextBigDecimal();
inputNumber = inputNumberBig.doubleValue();
rootedNumber = inputNumber;
do
{
rootedNumber = Math.sqrt(rootedNumber);
System.out.println(rootedNumber);
} while (rootedNumber >= 1.01 );
}
非常感谢任何和所有帮助。
-麦克风