4

私はJavaクラスを持っていて、この問題に困惑しています。体積計算機を作らなければなりません。球の直径を入力すると、プログラムが音量を吐き出します。整数では問題なく動作しますが、小数をスローするとクラッシュします。変数の精度に関係していると思います

double sphereDiam;
double sphereRadius;
double sphereVolume;

System.out.println("Enter the diamater of a sphere:");
sphereDiam = keyboard.nextInt();
sphereRadius = (sphereDiam / 2.0);
sphereVolume = ( 4.0 / 3.0 ) * Math.PI * Math.pow( sphereRadius, 3 );
System.out.println("The volume is: " + sphereVolume);

だから、私が言ったように、整数を入れれば、それはうまくいきます。しかし、私は25.4を入れました、そしてそれは私に衝突します。

4

2 に答える 2

9

これは、がまたはではなく、keyboard.nextInt()を期待しているためです。次のように変更できます。intfloatdouble

float sphereDiam;
double sphereRadius;
double sphereVolume;

System.out.println("Enter the diamater of a sphere:");
sphereDiam = keyboard.nextFloat();
sphereRadius = (sphereDiam / 2.0);
sphereVolume = ( 4.0 / 3.0 ) * Math.PI * Math.pow( sphereRadius, 3 );
System.out.println("The volume is: " + sphereVolume);

nextFloat()タイプもnextDouble()ピックアップし、自動的に目的のタイプに変換します。int

于 2013-01-25T16:35:26.010 に答える
1
double sphereDiam;
double sphereRadius;
double sphereVolume;
System.out.println("Enter the diameter of a sphere:");
sphereDiam = keyboard.nextDouble();
sphereRadius = (sphereDiam / 2.0);
sphereVolume = ( 4.0 / 3.0 ) * Math.PI * Math.pow( sphereRadius, 3 );
System.out.println("");
System.out.println("The volume is: " + sphereVolume);
于 2015-10-16T19:50:01.620 に答える