如何检查 id String 是不是为空,然后在 android studio 中定义一个默认值是不是为空

Posted

技术标签:

【中文标题】如何检查 id String 是不是为空,然后在 android studio 中定义一个默认值是不是为空【英文标题】: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

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于如何检查 id String 是不是为空,然后在 android studio 中定义一个默认值是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中检查模型的对象是不是为空?

如何检查 Mono 是不是为空?

如何检查 StringBuilder 是不是为空?

如何检查 RXSwift 中的 observable 是不是为空?

如何在jquery中检查输入类型号是不是为空[重复]

如何检查数字输入是不是为空?