我的程序计算圆锥体(pi * radius * slant-height
)的表面积。我使用的是if-elseif
梯形图,它表示如果倾斜高度保留为空并输入了垂直高度,程序将通过毕达哥拉斯定理计算倾斜高度。但是我不知道如何使程序接受空值
我尝试使用if(slant_height==null)
,但它表示类型不兼容,并且==
是"bad operator type"
{
public void CSAcone(double radius,double slant_height,double height) {
if (slant_height == null)
{
slant_height=Math.sqrt((radius*radius) + (height*height));
double CSA=(22*radius*slant_height) / 7;
System.out.println("radius= "+radius);
System.out .println("height= "+slant_height);
System.out .println("Curved Suface Area= "+CSA);
}
if(height == null)
{
double CSA=(22*radius*slant_height) / 7;
System.out.println("radius= " + radius);
System.out.println("height= " + slant_height);
System.out.println("Curved Suface Area= " + CSA);
}
}}
答案 0 :(得分:1)
尝试:
public void CSAcone(double radius, double slant_height, double height) {
if (slant_height == 0.0f) {
slant_height = Math.sqrt((radius * radius) + (height * height));
double CSA = (22 * radius * slant_height) / 7;
System.out.println("radius= " + radius);
System.out.println("height= " + slant_height);
System.out.println("Curved Suface Area= " + CSA);
}
if (height == 0.0f) {
double CSA = (22 * radius * slant_height) / 7;
System.out.println("radius= " + radius);
System.out.println("height= " + slant_height);
System.out.println("Curved Suface Area= " + CSA);
}
}
答案 1 :(得分:0)
null可以强制转换为任何引用类型,但不能强制转换为任何原始类型,例如int或boolean。
您可以使用基本类型并发送一个特殊值以指定空白。
或者仅使用对象类型(整数,布尔值,双精度型等)并检查空值(如您所做的那样)。
public void CSAcone(Double radius,Double slant_height,Double height){
if(radius == null){}
if(slant_height == null){}
if(height == null){}
// ...
}
答案 2 :(得分:0)
将变量类型更改为原始类型(int,double)的包装器类(Integer,Double)。在Java中,基本类型不能为null。