【问题标题】:How to check id String is Empty then put a define a default value if is Empty in android studio如何检查 id String 是否为空,然后在 android studio 中定义一个默认值是否为空
【发布时间】:2021-03-31 07:09:43
【问题描述】:

这是一个出租车应用程序,用户可以在其中获取驾驶员的旋转(方位) 与没有旋转(轴承)的设备一起工作良好 像这样 Here is the image

如果驱动设备不具备此功能,则用户将收到错误消息并导致应用崩溃

所以我的问题是如何通过检查 Sting 是否为空来避免这种情况 如果为空,我们必须为其设置一个默认值

这是我的代码

if (icondriver.equals("2")) {
                   driverMarkers.add(
                           gMap.addMarker(new MarkerOptions()
                                   .position(currentDriverPos)
                                   .icon(BitmapDescriptorFactory.fromResource(R.drawable.carmap))
                                   .anchor((float) 0.5, (float) 0.5)
---------error line------------->>  .rotation(Float.parseFloat(driver.getBearing()))
                                   .flat(true)
                           )

这是获取字符串值的方法

public String getBearing() {
       return bearing;
   }

这是错误

enter image description here

【问题讨论】:

    标签: java android google-maps-markers is-empty bearing


    【解决方案1】:
    public String getBearing() {
    
       String defaultValue = "0";
       String result;
    
       if(bearing == null || bearing.trim().isEmpty()) {
           result = defaultValue;
       } else {
           result = bearing;
       }
       return result;
    }
    

    【讨论】:

    • 我确实喜欢这种方法,但我认为提问者无法控制这部分代码。我可以建议对其进行编辑吗?另外,+1
    • 我知道我们被告知的不仅仅是退货是不好的......但是你看看来自 google、android、apache 的 src ......每个人都成功了。所以:i.ibb.co/vYdLTp0/wee.png
    • 你是对的,你的答案是完全正确的,但我想如果他不能修改这个方法,他可以在类中声明一个新方法,比如 getCorrectedBearing() 并在那里写条件以防止复杂性对于 SOLID :)
    • 这样您不仅可以验证非空值,还可以返回修剪后的字符串。有了这个,OP 将不需要在其 Float.ParseFloat 方法中进行任何进一步的验证:)。我总是喜欢在必须使用变量之前验证变量,这就是我喜欢这种方法的原因。
    • +1 在调用标记创建之前在他的类中创建静态 String getCorrectedBearing() 方法,如果他不能直接控制 getBearing()
    【解决方案2】:

    这假设如果字符串为空,0 作为默认的空白值传递。还假设字符串永远不会是null

    (...)
    rotation(Float.parseFloat(driver.getBearing().trim().isEmpty()?"0":driver.getBearing()))
    (...)
    

    parseFloat 将自动 trim() 字符串。但是为了真正检查isEmpty 是否没有给出假阴性,修剪字符串可以保证只有空格的字符串不会被传递为有效。 String s = " "; 将返回false,如果直接在其上调用isEmpty(),则无需先进行trim() 操作。

    所以,driver.getBearing().trim().isEmpty()?"0":driver.getBearing() 的条件说明了:

    • 如果字符串为空,则传递"0"(或您想要的默认值)。
    • 如果不是,则按原样传递字符串值 (driver.getBearing())。

    【讨论】:

    • @NewHere 如果您有时间,请查看 saeedata 的答案。如果您可以控制那部分代码,那么验证字符串将比我的回答中提出的条件更清晰。如果您可以访问 getBearing(),这是一个更好的选择
    • 然后您可以毫无顾忌地调用 rotation(Float.parseFloat(driver.getBearing()) ,因为它已经过验证(也经过空值检查)
    • 是的,我做到了,它也有效(他忘记在“ if(bearing == null || bearing.trim().isEmpty())” 之后加上“{”)如果有人想要试试看
    【解决方案3】:

    你可以使用 inline if -> bearing.isEmpty()?"0":bearing;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-31
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 2021-08-17
      • 2015-02-08
      相关资源
      最近更新 更多