【问题标题】:How to assign null value to CharSequence in java?如何在java中为CharSequence分配空值?
【发布时间】:2018-02-09 19:06:50
【问题描述】:

在我的应用程序中,我使用的是 EditText。当编辑文本中没有文本时,我想分配 numberOfYearsBirthday=0。

我已经尝试了以下代码并进行了调试。我已经看到,即使我的 charSequence="" 但它会忽略该语句并移至 else 语句,从而导致错误并使我的应用程序崩溃并将空值分配为整数。

xB1.addTextChangedListener(new TextWatcher(){

    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count) {                                        

        if(String.valueOf(charSequence)==null){
            numberOfYearsBirthday=0;
        }else{numberOfYearsBirthday= Integer.valueOf(charSequence.toString());
        }

我也试过下面的代码

charSequence.toString()==""

另外,下面还有一个

charSequence ==""

但程序忽略了我的 if 语句。我在这里做错了什么?

【问题讨论】:

  • if( charSequence == null || charSequence.length() == 0 ){..}
  • 为什么我需要使用“charSequence == null”?
  • 因为根据您的问题,charSequence 也可能为空。
  • String.valueOf() 不返回空值。如果您想检查charSequence 是否为空,请使用== 运算符将其比较 为空。

标签: java android null charsequence


【解决方案1】:

如果 charSequence 为 null,则使用 String::valueOf 将返回文本“null”,这与 null 引用不同,因此您的条件将不起作用。同样做charSequence.toString()=="" 也行不通,因为这不是compare Strings in Java 的正确方法。

试试这个:

// check if charSequence is null or empty ""
if (charSequence == null || charSequence.toString().isEmpty()) {
    numberOfYearsBirthday = 0;
} else {
    numberOfYearsBirthday = Integer.valueOf(charSequence.toString());
}

【讨论】:

  • 我明白了。但还有一件事。 if (charSequence.toString().isEmpty()) -- 工作正常。使用“charSequence == null”有什么好处?
  • 如果charSequence 为空,而您执行charSequence.toString().isEmpty(),那么您将获得NullPointerException
【解决方案2】:

使用TextUtils.isEmpty(charSequence)

第一个解决方案的错误仅检查 null 与空字符串不同。

第二个不起作用,因为在 Java 中检查字符串是否相等的正确方法是 stringValue.equals("")== 将检查这两个字符串是否是相同的字符串实例,但它们不是。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多