【问题标题】:Printing string array also prints null打印字符串数组也会打印 null
【发布时间】:2013-05-27 15:38:08
【问题描述】:

当我打印字符串数组的内容时,输出也会打印“null”。我不确定这有什么问题。这是输出,我期望的是没有'null'的输出

null(wa?>=0)nullnull*(wo?>=0)nullnull*(4*wa?+7*wo?>=50)nullnull*(d1=10)nullnull*((d2=1)+(k=2))nullnull

感谢并感谢您的帮助。我会说我在 Java 方面的技能处于初级水平,两周前我就开始了。

下面是实际代码:

        String[] arrStr = new String[50];
        int countStr = 0;

        for (int i = 0; i < para.length; i++) {
            if (para[i] == '(') {
                count = count + 1;
            }
            if (para[i] == ')') {
                count = count - 1;
            }
            if (count > 0) {
                arrStr[countStr] = arrStr[countStr] + para[i];
            } else {
                if (para[i] == ')') {
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    countStr += 1;
                } else {
                    countStr += 1;
                    arrStr[countStr] = arrStr[countStr] + para[i];
                    // System.out.println(para[i]);
                }
            }
        }
        System.out.println(countStr);

        for (int i = 0; i < countStr; i++) {
            System.out.print(arrStr[i]);
        }

在这部分之前,我正在从一个word文档中读取以下字符串:

(wa?>=0)AND(wo?>=0)AND(4*wa?+7*wo?>=50)AND(d1=10)AND((d2=1)+(k=2))

我认为问题可能是由于以下行:

arrStr[countStr] = arrStr[countStr] + para[i]; 

由于arrStr[countStr] 最初为空,我向其中添加了一个元素,因此将其保存为null+para[i]。你认为有可能吗?

就像我尝试时一样:System.out.println(arrStr[0]); 我得到的输出为

null(wa?>=0)

【问题讨论】:

  • 如果您在调试代码时需要帮助,实际代码会有所帮助。
  • 能否请您显示导致错误的代码?
  • 在数组上完成每个赋值操作后,打印出你已经赋值的值。它会让您更好地了解值被设置为 null 的位置。如果你能提供完整的代码,就更容易指出问题所在。

标签: java arrays string printing null


【解决方案1】:
System.out.println(null + "Bla");

打印nullBla。表示为 String 的 null 是“null”。这里的问题是,最初你所有的 String[] 都是由 null 组成的。您需要先初始化它们。通常,

Arrays.fill(arrStr, "");

应该这样做。

【讨论】:

  • 谢谢,我就是这么想的。非常感谢大家花时间回答:)
【解决方案2】:

如果arrStr 中的任何元素在打印时为空,它将忠实地打印。

在不知道代码中的细节的情况下,您可以确保数组中的任何元素都不为空(确保长度匹配并且您没有跳过 arrStr 中的元素,或者在打印之前检查 null元素。

【讨论】:

    【解决方案3】:

    你不初始化arrStr数组的值,你只是为它分配大小,所以数组的每个元素都是空的。为数组的元素赋值时,会将其值(为 null)与 para[i] 的值连接起来。

    你应该在使用之前初始化你的数组:

    String[] arrStr = new String[50];
    for (int i = 0; i < arrStr.length; i++) {
        arrStr[i] = "";
    }
    

    【讨论】:

    • 虽然对于这种情况来说这是一个可以接受的解决方案,但我一般不愿推荐这个。在我看来,最好设计处理可能出现空值的代码,而不是设计期望没有空值并希望最好的代码。前者应该始终成为更强大的解决方案。
    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多