Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将一个类中的数组放入另一个类中的单个数组中?_Java_Arrays - Fatal编程技术网

Java 如何将一个类中的数组放入另一个类中的单个数组中?

Java 如何将一个类中的数组放入另一个类中的单个数组中?,java,arrays,Java,Arrays,我有一个带有一组数组的主程序,如下所示。然后将这些数组导入另一个类(second.java)。在这里,我希望将所有数组放在一个数组(“完整数组”)中,这样我就可以在程序结束时单独访问其中的每一个数组 Main.java public class Main{ public enum State{A,D,H}; Test[] tests = new Test[]{ new Test(new State[]{State.A, State.H, Stat

我有一个带有一组数组的主程序,如下所示。然后将这些数组导入另一个类(second.java)。在这里,我希望将所有数组放在一个数组(“完整数组”)中,这样我就可以在程序结束时单独访问其中的每一个数组

     Main.java

  public class Main{

  public enum State{A,D,H};

  Test[] tests = new Test[]{
           new Test(new State[]{State.A, State.H, State.A, State.H}),
           new Test(new State[]{State.A, State.H, State.A, State.D}),
           new Test(new State[]{State.H, State.D, State.A, State.A})
   };
第二类是这样的:

  public class Test{

public static Main.State[] in;
public static Main.State[] in_state= new Main.State[4];
public static String data_in;

Test(Main.State[] in){
    this in = in;
    this.in_state=in_state;

for( int i=0; i<in.length; i++){
    in_state[i]=in[i];
    data_in =java.util.Arrays.toString(in_state);
    data_in = data_in.replaceAll(",", "");
    data_in = data_in.replaceAll(" ","");}
complete_array[] = [AHAH,AHAD,HDAA].
相反,我想找到一种方法将这些数组放入单个数组中。大概是这样的:

  public class Test{

public static Main.State[] in;
public static Main.State[] in_state= new Main.State[4];
public static String data_in;

Test(Main.State[] in){
    this in = in;
    this.in_state=in_state;

for( int i=0; i<in.length; i++){
    in_state[i]=in[i];
    data_in =java.util.Arrays.toString(in_state);
    data_in = data_in.replaceAll(",", "");
    data_in = data_in.replaceAll(" ","");}
complete_array[] = [AHAH,AHAD,HDAA].
谁能告诉我怎么才能做到?
提前谢谢。

您可以创建一个POJO类的单个数组,它将保存所有不同数组的基址,您可以从任何地方访问它。

您可以在Main中声明一个列表,该列表将打包所有状态数组,如下所示:

private  List<State[]> list_states = new ArrayList<State[]>(); 

list_states.add(new State[]{State.A, State.H, State.A, State.H});
list_states.add(new State[]{State.A, State.H, State.A, State.D});
list_states.add(new State[]{State.H, State.D, State.A, State.A});
在类测试的情况下,它将如下所示:

new Test(list_states);
public class Test{
public static Main.State[] in_state= new Main.State[4];
private List<State[]> list_states = new ArrayList<State[]>();


Test( List<State[]> in){
    this in = in;
    this.in_state=in_state;

for (State[] array: in){

    for( int i=0; i<array.length; i++){
        in_state[i]=array[i];
        data_in =java.util.Arrays.toString(in_state);
        data_in = data_in.replaceAll(",", "");
        data_in = data_in.replaceAll(" ","");}
        this.in_state=in_state;
    }

}
公共类测试{
公共静态Main.State[]处于_状态=新的Main.State[4];
private List_states=new ArrayList();
测试(列表中){
这个in=in;
this.in_state=in_state;
对于(状态[]数组:中){

对于(inti=0;i,尽管您的代码有点混乱。我仍然理解您的观点。您希望将两个数组合并为一个数组,对吗

这可能有助于:

int[] array1 = {1, 2, 3, 4, 5};
int[] array2 = {6, 7, 8, 9, 10};
//make a new array and put all the stuff of the two arrays in it.
int[] combined = new int[array1.length + array2.length];
for (int i = 0 ; i < array1.length ; i++) {
    combined[i] = array1[i];
}
for (int i = 0 ; i < array1.length ; i++) {
    combined[i + array1.length] = array2[i];
}
int[]array1={1,2,3,4,5};
int[]array2={6,7,8,9,10};
//制作一个新数组,并将两个数组中的所有内容放入其中。
int[]合并=新的int[array1.length+array2.length];
for(int i=0;i
我认为这不是最好的方法,但它仍然是一个解决方案


希望这有帮助!

一小时前你不是已经问过这个问题了吗?:)@科科:这不是同一个问题:)我以前问过如何将这些数组连接成一个字符串。但后来我意识到这是不对的。因此我现在正在寻找一种方法将这些数组添加到一个完整的数组:)这段代码在很多级别上都是错误的。而且令人困惑。你的目标到底是什么?@SamratDutta:code是我试图创建的更大图景的一部分。从这段代码中,我只想通过将数组放入单个数组中来访问它们。如果听起来有点混乱,很抱歉。我可以知道为什么您认为它错了吗?我不太清楚您想在这里做什么。如果您需要打印二维数组,可以使用
arrays.deepToString()
。我还建议您为Fields指定适当的名称,但他想要的是数组,而不是列表。@Sweeper这是事实:)我当时没有考虑xD,如果有人想以其他方式执行此操作,我仍然会保留此解决方案,但您的解决方案看起来与指定的要求完美一致!这正是我的意思:)谢谢您。我认为这可能会奏效。但我仍然有一个问题。正如您所看到的,我的数组是主程序的一部分。因此,每次我通过第二个测试类从主类访问一个数组时,之前存储的数组都会被传入的数组重写。我如何避免这种重写?您能提出一些建议吗?:)@Goldengirl我不太明白您的code可以,但我想如果要防止覆盖,可以将数组复制到另一个数组中。只需使用Arrays.copyOf方法。您将通过读取文档来了解如何操作。@Goldengirl测试类的字段不应是静态的。