【问题标题】:Find the maximum of the length of 2 arrays求2个数组长度的最大值
【发布时间】:2015-05-06 18:54:11
【问题描述】:

我将 2 个长度不同的数组传递给控制器​​,我想执行一个 for 循环,其长度将是 2 个数组长度的最大值。 我不知道如何执行。我尝试了 Math.max 但它给了我错误,因为无法为最终变量长度赋值。

String[] x =0;
x.length = Math.max(y.length,z.length);
for(int i=0; i < x.length; i++)

x 和 y 中的元素个数不固定。它改变了我们从前端传递的内容。

【问题讨论】:

  • X.length 是一个你不能改变的常数。
  • 看起来对您的意图有些疑问。你想创建一个新的字符串数组吗?还是您只对使用最大长度作为循环条件感兴趣?

标签: java math max maxlength


【解决方案1】:

用所需长度初始化新数组:

String[] x = new String[Math.max(y.length,z.length)];

如果您不需要创建数组,只需使用Math.max 的结果作为停止循环的条件:

for (int i = 0; i < Math.max(y.length,z.length); i++) {
    //...
}

【讨论】:

  • 嗨 Luiggi,你我都搞错了。仅基于代码,看起来 OP 正在尝试创建一个新数组,并对其进行循环。但是在重新阅读问题之后,看起来他们只关心使用最大的数组长度作为循环停止条件
  • @Trobbins 好吧,您仍然必须以某种方式初始化数组,根据当前对问题的描述,这似乎是最好的方法。
  • 我们假设 OP 正在循环一个新数组,尽管没有上下文暗示这一点。看起来 OP 在 for 循环中看到了太多 array.length 条件,以至于他们试图适应(有错误)。
  • @Trobbins 我不这么认为,但我仍然更新了答案以反映这一点。
  • 我也这样做了。看看其他答案,似乎有歧义。在任何情况下,@downvoter 都应该通过您的编辑更改他们的投票。
【解决方案2】:

只需将您的 Math.max() 操作带入数组的初始化即可。

String[] x = new String[Math.max(y.length, z.length)];

为了清楚起见,这是一个扩展:

int xLength = Math.max(y.length, z.length);
String[] x = new String[xLength];

编辑:除非,OP,您对创建另一个数组不感兴趣...

我想执行一个 for 循环,它的长度将是 2 个数组长度的最大值

只需将您的 Math.max() 操作带入您的 for 循环:

for(int i=0; i < Math.max(y.length, z.length); i++){
    //code here
}

【讨论】:

    【解决方案3】:

    将变量设置为数组的最大长度,创建一个具有该长度的新数组,然后循环直到该点。

    int maxLen = Math.max(y.length, x.length);
    String[] array = new String[maxLen];
    for(int i = 0; i < maxLen; i++){
        // Loop code here
    }
    

    【讨论】:

      【解决方案4】:
      int max_length = Math.max(y.length,z.length);
      
      for(int i=0; i < max_length ; i++){
       //...
      }
      

      如果您尝试创建一个总长度为y and z arrays 的数组,您可以使用该max_length 创建一个新的String[],例如

      String[] newArray = new String[max_length];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-04
        • 1970-01-01
        • 1970-01-01
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2019-04-03
        • 2010-10-02
        相关资源
        最近更新 更多