【问题标题】:Android:way Assign "0" to empty array item conditionandroid:way 将“0”分配给空数组项条件
【发布时间】:2014-08-21 17:16:00
【问题描述】:

我有一个字符串数组,它的内容取决于来自 RSS 提要的结果。现在,大多数时候数组将包含四个项目。但是,在极少数情况下,它会包含三个。

我尝试了以下代码以在数组中搜索空值(空),然后将 0 分配给此

String[] parts = newmenuItemsString.split(",");
               String s1part1 = parts[0];
               String s1part2 = parts[1];
               String s1part3 = parts[2];
               String s1part4 = parts[3];

for (int i=0; i<=parts.length; i++) 
                   { 
                       if (parts[i]!=null ) {   
                       } else {
                           i = 0;
                       }
                    }

这是我的字符串数组,这是它的 for 循环。

基本上,我想检查数组中的所有项目是否都已填充,如果有一个为空,我想为其分配“0”。

【问题讨论】:

    标签: java android arrays for-loop


    【解决方案1】:

    一种方法是:

    String[] parts = newmenuItemsString.split(",");
    String[] myFourStrings = new String[4];
    
    System.arraycopy(parts, 0, myFourStrings, 0, parts.length);
    
    if (parts.length == 3) {
        myFourStrings[3] = "0";
    }
    

    这使用了两个数组。第一个长度未知 - 由输入字符串中“,”的数量设置。第二个固定为 4。

    然后我们将parts 的所有值复制到新数组中。如果只有 3 项,请添加第 4 项。

    注意:您应该真正检查parts 数组是否有超过 4 个项目,因为这会导致错误。

    编辑:完整示例,带有字符串分配和一些优化:

    String[] parts = newmenuItemsString.split(",");
    String[] myFourStrings;
    
    if (parts.length != 4)
    {
    
        myFourStrings = new String[4];
    
        System.arraycopy(parts, 0, myFourStrings, 0, parts.length);
    
        if (parts.length == 3)
        {
            myFourStrings[3] = "0";
        }
    
    }
    else
    {
        myFourStrings = parts;
    }
    
    String s1part1 = myFourStrings[0];
    String s1part2 = myFourStrings[1];
    String s1part3 = myFourStrings[2];
    String s1part4 = myFourStrings[3];
    

    其实一个更一般的例子,取可变数量的逗号,最多maxItems

    int maxItems = 6;
    String[] parts = newmenuItemsString.split(",");
    String[] myStrings = new String[maxItems];
    
    if (parts.length < myStrings.length) {
        System.arraycopy(parts, 0, myStrings, 0, parts.length);
    } else {
        System.arraycopy(parts, 0, myStrings, 0, myStrings.length);
    }
    
    for (int i = 0; i < myStrings.length; i++)
    {
        if (myStrings[i] == null)
        {
            myStrings[i] = "0";
        }
    }
    
    String s1part1 = myStrings[0];
    String s1part2 = myStrings[1];
    String s1part3 = myStrings[2];
    String s1part4 = myStrings[3];
    

    【讨论】:

    • 在我的代码中,我已将字符串添加到数组中,因此当它拆分时,每个部分都被分配了一个变量......然后如何将您的代码添加到我自己的代码中?对不起,我有点困惑
    • 我还使用 (String s1part1 = parts[0];) 部分吗
    • @ChronosChris 已编辑以显示更完整的示例。
    • 这太棒了,非常感谢。代码示例很有帮助
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多