【问题标题】:Java fill 2d array with 1d arraysJava用一维数组填充二维数组
【发布时间】:2015-01-08 11:59:55
【问题描述】:

填充以下数组的最佳方法是什么:
来自主:

String[][] data = new String[x][3]; 

for(int a = 0; a < x; a++){ 
    data[a] = someFunction();
}

我正在使用的功能..:

 public String[] someFunction(){
     String[] out = new String[3];

     return out;
 }

有可能做这样的事情吗?还是我必须用for循环填充它?

使用此代码,我收到错误“无法从静态内容引用非静态方法 someFunction() ---”(netbeans) 在线 data[a] = someFunction();

【问题讨论】:

  • 你可以试试这个,也许?不确定如何为数组元素生成数据...

标签: java arrays function 2d


【解决方案1】:

您必须指定数组包含多少行。

String[][] data = new String[n][];

for(int i = 0; i < data.length; i++){
    data[i] = someFunction();
}

注意someFunction 可以返回不同长度的数组。

当然,您的someFunction 返回一个空引用数组,因此您仍然需要在某个循环中初始化该数组的Strings。

我刚刚注意到您遇到的错误。将您的 someFunction 更改为静态。

【讨论】:

  • 我确实指定了。字符串[][] 数据 = 新字符串[x][3]; x*3 和 someFunction 给出 String[] out = new String[3];
  • @Vedran 我的错误。我以为你的意思是 x 意味着任意长度。
  • 知道我能做什么吗?
  • @Vedran 将您的 someFunction 方法更改为静态。
  • 哦。完全错过了。感谢您的帮助!
【解决方案2】:

通过添加“静态”来更改您的 someFunction()。

您还应该考虑将 ArrayList 用于此类任务,这些任务是动态的并且是为您的目的而设计的(我猜)。

public static void main(String[] args){

    int x = 3;

    String[][] data = new String[x][3]; 

    for(int a = 0; a < x; a++){ 
        data[a] = someFunction();
    }

}

public static String[] someFunction(){
     String[] out = new String[3];
     return out;
 }

你好,蒂姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2015-01-24
    • 1970-01-01
    • 2016-05-27
    相关资源
    最近更新 更多