【问题标题】:Removing the 0 value from a sorted Array?从排序数组中删除 0 值?
【发布时间】:2011-01-13 03:14:13
【问题描述】:

我想知道是否有办法删除我在运行以下代码时得到的默认“0”值:

Scanner scan = new Scanner(System.in);

int [] x = new int[4];
for ( int i = 1; i < x.length; i++ )
{
    System.out.println( "Enter number " + i + ": ");
    x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));
}

输出如下

[0, i[1], i[2], i[3]]

当然,这里所有的数组值其实都是控制台输入的数字。 代码正在运行。它成功地将任何数字排序为正确的顺序,但是,总是有这个讨厌的 0。

我不想删除所有的 0(我希望用户能够输入 0 并显示它)--我只是不想要默认的 0。有什么想法吗?

【问题讨论】:

  • 重新格式化的代码;如果不正确,请恢复。

标签: java arrays sorting default zero


【解决方案1】:

Java 中的数组索引是从 0 开始的,而不是从 1 开始的。所以从 0 而不是从 1 开始迭代,你应该会很好:

for ( int i = 0; i < x.length; i++ )

【讨论】:

  • 哇哦。多么愚蠢的错误。我应该被扇耳光。非常感谢!
【解决方案2】:

for (int i = 0; i

【讨论】:

    【解决方案3】:

    当您分配一个大小为 4 的数组时,您分配了四个整数:i[0]、i[1]、i[2] 和 i[3]。因为 Java 相当友好,所以它将所有四个都设置为 0。所以您在输出中看到的是 [i[0],i[1],i[2],i[3]](按排序顺序)。排序没有添加 0,它已经存在。如果你只想要 3 个数字,那么你应该分配一个 int[3] 而不是一个 int[4]。然后,随之而来的是,当您要求数字 1 时,将其存储在 i[0] 中。最简单的更改是简单地将顶行更改为

     int [] x = new int[3];
    

    和后面的一行

     x[i-1] = scan.nextInt();
    

    不过,其他答案建议的更改更为常见。大多数程序员都会让 i 从 0 变为 2,然后在与用户交谈时输出 i+1。

    【讨论】:

    • 谢谢你更详细的解释:]
    【解决方案4】:

    以下代码应该可以工作:

    Scanner scan = new Scanner(System.in);
    
    int[] x = new int[3];
    for (int i = 0; i < x.length; i++)
    {
      System.out.println( "Enter number " + i + ": ");
      x[i] = scan.nextInt();
    }
    Arrays.sort(x);
    System.out.println(Arrays.toString(x));
    

    正如其他人指出的那样,问题在于您的 int i 应该从 0 开始,而不是 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 2020-11-30
      • 2021-11-12
      • 2021-01-27
      • 1970-01-01
      • 2021-11-06
      • 2014-09-05
      相关资源
      最近更新 更多