これは私の最初の投稿であり、過去 24 時間にわたって Google とスタック オーバーフローを検索してきましたが、問題を突き止めることができないようです。
単純な平方根プログラムを作成しています。入力セクションでは、「while」ループを開始します。2つの条件を比較するために必要です。1. は数字の入力です。 2. は 10 以上の数字の入力です。
元のプログラムの作成には成功しましたが、デバッグ中に小さな問題が発生しました。大きな小数または数値を変更すると、実行時エラーが発生します。
BigDecimal() を使用してこの問題を解決できることを発見しました。
しかし、インターネットを何度検索しても解決できない論理エラーが発生しています。
while ループで使用する 2 つの条件は次のとおりです。
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 );
}
どんな助けでも大歓迎です。
-マイク