这是我的第一篇文章,过去24小时我一直在搜索谷歌和堆栈溢出,似乎无法解决我的问题。
我正在创建一个简单的平方根程序。对于输入部分,我启动一个'while'循环。我需要它来比较两个条件。 1.是输入数字 2.输入数字超过十。
我成功创建了原始程序,但是在调试时我遇到了一个小问题。当我输入一个变大的十进制或数字时,我会得到一个运行时错误。
我发现我可以使用BigDecimal()来解决这个问题。
然而,我现在遇到一个逻辑错误,无论我多少次搜索互联网,我都无法解决。
我在while循环中使用的两个条件是:
while (!scan.hasNextBigDecimal() || (inputNumberBig.compareTo(SENTINAL)>0))
这将确保存在BigDecimal,但不会确保输入的数字超过十。
这是整个计划
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 );
}
非常感谢任何和所有帮助。
-Mike
答案 0 :(得分:0)
inputNumberBig = scan.nextBigDecimal();
inputNumber = inputNumberBig.doubleValue();
在你while
循环使你的逻辑工作之前,这些都有可能。
此外,
while (!scan.hasNextBigDecimal() || (inputNumberBig.compareTo(SENTINAL)>0))
我可以看到这会导致问题。您应该使用&&
代替||