【问题标题】:How to set array elements after I have initialized it? [duplicate]初始化后如何设置数组元素? [复制]
【发布时间】:2016-06-27 05:32:22
【问题描述】:

我正在寻找一种简单的方法来在初始化后设置数组的元素。我试过这个:

package com.ehsan.app;

public class Main {

    public static void main(String[] args) {
        int[] test = new int[6];
        test = {1,2,3,4,5};
    }
}

但是编译它会出错:

Error:(7, 16) java: illegal start of expression
Error:(7, 17) java: not a statement
Error:(7, 18) java: ';' expected
Error:(9, 1) java: class, interface, or enum expected

我可以使用这种方式将值放入数组中:

test[0] = 1;
test[1] = 2;
test[2] = 3;
test[3] = 4;
// and so on.

我只是在寻找一种简单的方法来做到这一点。


编辑

我知道我可以用这个:

int[] test = {1,2,3,4};

但我想要的是一种在初始化后将值放入数组的简单方法。

还有一件事:我不是在寻找循环!


编辑

@Python 给出的答案正是我想要的!

【问题讨论】:

  • 请改写你的问题,初始化数组后,只有你可以在循环的帮助下按位置赋值,或者a[i],当i=1,2,......N。
  • 如果您这样做,test = {1,2,3,4,5}; 表示您不知道就数组初始化而言什么是有效语句 - 这不是 IDE 问题,而是无效的 Java 语句。为什么通过循环将值放入数组元素中看起来并不容易?
  • 如果你的数组长度是动态的,而不是没有循环,你可以去递归。
  • 我对 C# 不熟悉,但在 Java 中,一旦你为数组变量分配了内存,就没有一个简单的简写方式来放置该数组的所有值。您将不得不使用 Python 回答中列出的 API 类

标签: java arrays initialization


【解决方案1】:

您可以简单地通过在一行中使用 Arrays 的静态方法来做到这一点:

Integer[] test = new Integer[10];
Arrays.<Integer>asList(1,2,3,4,5,6,7).toArray(test);

注意:使用 'int' 也可以,但你要添加显式转换 (int[])

【讨论】:

  • 这看起来很酷,谢谢
  • 只是对这种方法的提醒:对于这里的大多数其他方法,如果test 比“初始化列表”短,您仍然会使用足够的元素填充到test(并忽略从“初始化列表”中休息)。但是,对于这种方法,它将被静默忽略,test 将保持未初始化状态。
【解决方案2】:

如果要初始化数组,请尝试使用 Array Initializer:

int[] test = new int[6];
int[] test = {1,2,3,4,5,6};

int[] test = new int[]{1,2,3,4,5,6};

【讨论】:

  • 如果这不是你要找的,你需要重写你的问题,因为不清楚你在找什么。
  • 好像他编辑了他的问题,你可以删除你的评论。
【解决方案3】:

使用 for 循环初始化:

for(int i=0;i<test.length-1;i++){
 test[i]=i;
}

这将使测试数组的内容为 0,1,2,3,4,5;

【讨论】:

    【解决方案4】:

    我相信除了使用循环来填充您已经实例化的数组之外别无他法。

    但是,您不需要自己编写循环:

    System.arrayCopy() 完成这项工作。有一天 JVM 可能会决定做一些类似memcpy 的事情来完成这项工作,通过使用这种内置函数,您可以从这种 JVM 更改中受益,而无需更改源代码。

    【讨论】:

      【解决方案5】:

      初始化后你不能一次赋值, 你可以这样做:

      test[0]=1;
      test[1]=2;
      

      同样... 希望这会有所帮助

      【讨论】:

      • 所以没有更简单的方法来做到这一点!?
      • 只使用for循环更方便..
      • 当然,我知道,只是在初始化后寻找一些初始化列表!谢谢。
      • for(int i=0;i
      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2013-03-05
      相关资源
      最近更新 更多