0

这是我的第一篇文章,过去 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 );

}

非常感谢任何和所有帮助。

-麦克风

4

1 回答 1

0
inputNumberBig = scan.nextBigDecimal();
inputNumber = inputNumberBig.doubleValue();

These HAVE to go before you while loop for your logic to work.

Also,

while (!scan.hasNextBigDecimal() || (inputNumberBig.compareTo(SENTINAL)>0))

I could see this causing a problem. You should use && instead of ||

于 2013-10-23T02:59:48.877 回答