【问题标题】:Print Empty Message if Array is Empty如果数组为空,则打印空消息
【发布时间】:2018-04-13 00:55:00
【问题描述】:

假设我想以相反的顺序打印数组。但是,如果数组为空,则应打印“数组为空”

为什么这段代码不起作用:

我们可以假设如果数组为空a.length 为 0 还是为空? if() 语句中的 a.length 应该是 ==。for 循环中不允许它工作的 if 语句有什么问题?还是从来没有进入过for循环?

public class Test2 {

    public static void main(String[] args) {
        int[] a = {};

        for (int i = a.length - 1; i >= 0; i--) {
            System.out.print(a[i] + " ");
            if (a.length == 0)
                System.out.print("The array is empty");

        }
    }
}

此代码有效:

if (a.length == 0)
    System.out.print("The array is empty");
else
{
    for(int i = a.length - 1 ; i >= 0 ; i--)
    {
        System.out.print (a[i] + " ");
    }
}

这也有效:

for(int i = a.length - 1 ; i >= 0 ; i--)
{
    System.out.print (a[i] + " ");
}
if (a.length == 0)
    System.out.print("The array is empty");

【问题讨论】:

  • 如果您使用的是java,请将其添加到标签中。
  • 请指定语言
  • 在您的第一段代码中,if (a.length == 0) 行在您的for 循环中(与其他两个部分不同)。数组长度在循环内永远不会为零,所以你不会得到你想要的输出。
  • 戴夫你说数组长度在循环内永远不会为零。如果数组开始为空......或者这是否意味着你永远不能创建一个没有元素的数组。因此,数组的长度总是必须为 1 或更多长度?

标签: java arrays for-loop


【解决方案1】:

参见int[] a = {};创建一个大小为 0 的数组。因此 for 循环甚至不会在第一种情况下执行。我们来看第二种情况。

这里,如果条件if (a.length == 0)被执行,否则部分不执行。

让我们看看第三种情况。再次 for 循环不执行。下一个代码移至 for 循环之外的 if 语句。它被执行。

我希望你明白为什么你的 for 循环没有执行。见a.length=0。因此 i =-1 但我们在 for 循环中给出的条件是 i>=0

【讨论】:

  • 感谢打破本杰明!你帮我发现为什么它永远行不通。我的理解是:i = a.length - 1 并且 i 为空数组的 0,它永远不会进入 for 循环 b/c i 将是 -1。即使我们将其更改为:for(int i = a.length ; i >= a.length ; i--) 当它减负时它变成 outOfBound。太好了!
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多