十进制格式说 "String cannot be converted to double"
Decimal Format Saying "String cannot be converted to double"
我试图将球体的体积四舍五入到小数点后一位,但我一直收到一条错误消息,提示字符串无法转换为双精度。因此,我没有尝试格式化变量,而是只是输入了一个数字来尝试查找问题,但它仍然表示无法将字符串转换为双精度。我做错了什么以及如何将我的变量格式化为小数点后一位?
import java.util.*;
import java.util.InputMismatchException;
import java.lang.Math.*;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double diameter;
DecimalFormat df = new DecimalFormat("#.#");
//User Input Section
while (true) {
System.out.print("What is the diameter of the sphere (cm): ");
try {
diameter = input.nextDouble();
break;
} catch (InputMismatchException mme) {
System.out.println("Please enter a number in number format (e.x. 1, 55, 6)");
input.nextDouble();
}
}
double radius = diameter/2;
double radiusCubed = radius * radius * radius;
double radiusSquared = radius * radius;
double fourOverThree = 4/3;
double volumeOfSphere = fourOverThree * Math.PI * radiusCubed;
double volumeOfSphere2 = df.format(1.1111111);
double surfaceAreaOfSphere = 4 * Math.PI * radiusSquared;
System.out.print("The volume of the sphere is " + volumeOfSphere2);
}
}
DecimalFormat.format
return一个String
。但是您将其分配给 double
变量。
将语句更改为:
String volumeOfSphere2 = df.format(1.1111111);
收到此类错误时,请阅读该方法可用的 javadoc 并检查 return type/parameter 类型是否与您指定的匹配。
DecimalFormat.format()方法return一个字符串。您可以通过 Double.parseDouble() 方法解析 将其加倍。
double volumeOfSphere2 = Double.parseDouble(df.format(1.1111111));
我试图将球体的体积四舍五入到小数点后一位,但我一直收到一条错误消息,提示字符串无法转换为双精度。因此,我没有尝试格式化变量,而是只是输入了一个数字来尝试查找问题,但它仍然表示无法将字符串转换为双精度。我做错了什么以及如何将我的变量格式化为小数点后一位?
import java.util.*;
import java.util.InputMismatchException;
import java.lang.Math.*;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double diameter;
DecimalFormat df = new DecimalFormat("#.#");
//User Input Section
while (true) {
System.out.print("What is the diameter of the sphere (cm): ");
try {
diameter = input.nextDouble();
break;
} catch (InputMismatchException mme) {
System.out.println("Please enter a number in number format (e.x. 1, 55, 6)");
input.nextDouble();
}
}
double radius = diameter/2;
double radiusCubed = radius * radius * radius;
double radiusSquared = radius * radius;
double fourOverThree = 4/3;
double volumeOfSphere = fourOverThree * Math.PI * radiusCubed;
double volumeOfSphere2 = df.format(1.1111111);
double surfaceAreaOfSphere = 4 * Math.PI * radiusSquared;
System.out.print("The volume of the sphere is " + volumeOfSphere2);
}
}
DecimalFormat.format
return一个String
。但是您将其分配给 double
变量。
将语句更改为:
String volumeOfSphere2 = df.format(1.1111111);
收到此类错误时,请阅读该方法可用的 javadoc 并检查 return type/parameter 类型是否与您指定的匹配。
DecimalFormat.format()方法return一个字符串。您可以通过 Double.parseDouble() 方法解析 将其加倍。
double volumeOfSphere2 = Double.parseDouble(df.format(1.1111111));