【问题标题】:How to accept an empty integer value?如何接受一个空的整数值?
【发布时间】:2019-10-05 10:20:47
【问题描述】:

我的程序计算圆锥的表面积 (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);
    }
}}

【问题讨论】:

  • 在编写方法签名时,slant_height 永远不会为空,因为您不能通过为该变量提供 null 值来调用 CSAcone,代码将无法编译。注意slant_heightdouble,而不是Double
  • 使用对象类型,而不是原始类型。
  • 可以使用 isEmpty() 方法检查空值
  • @Saim, isEmpty() 方法只适用于字符串

标签: java


【解决方案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);
    }
}

【讨论】:

  • 我可以这样做,但这意味着用户必须在其中一个框中输入 0.0
【解决方案2】:

null 可以转换为任何引用类型,但不能转换为任何基本类型,例如 int 或 boolean。

您可以使用原始类型并发送一个特殊值来指定为空。

或者只使用对象类型(整数、布尔值、双精度等)并检查空值(就像你做的那样)。

public void CSAcone(Double radius,Double slant_height,Double height){
   if(radius == null){}
   if(slant_height == null){}
   if(height == null){}
   // ...
}

【讨论】:

    【解决方案3】:

    将变量类型更改为原始类型(int、double)的包装类(Integer、Double)。在 Java 中,原始类型不能为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-17
      • 2015-02-16
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多