为什么我的程序不打印它接收到的数据而不是地址?

Why doesnt my program print the data it receives instead of the address?

我创建了一个包含两个 class 的 java 程序。一个 class(Main) 包含传递给第二个 class(Planning) 的数据数组。第二个 class(Planning) 使用此数组为其变量赋值 'input and output'。代码如下所示:

////Main.java///
import java.util.ArrayList
public class Main{
public enum State{A, D, H};

Planning plan = new Planning[]{
      new Plan(new State[]{State.A,State.A,State.A,State.A}, new State[]{State.D,State.A,State.A,State.D,State.A,State.A})}

另一个 Class Planning.java 看起来像这样:

public class Planning {


    Main.State[] input;
    Main.State[] output;
    Planning(Main.State[] input,Main.State[] output){
    this.input = input;
    this.output = output;

    System.out.println("The state is " + input);
}

然而,当我打印出 'input at the end' 时,它显示

[LMain$State;@4e98f805

我想让它显示从主函数传入的数组。有人可以告诉我如何实现吗?

也许尝试使用System.out.println("The state is " + Arrays.toString(input));

因为打印输入等同于打印input.toString();并打印数组的内存地址。

http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

您可以覆盖 Planning class 中的 toString() 方法,因此当您打印出 Planning 对象时,它会打印您想要的信息。

类似

public class Planning {
        Main.State[] input;
        Main.State[] output;

        Planning(Main.State[] input,Main.State[] output) {
            this.input = input;
            this.output = output;
        }

        @Override
        public String toString() { 
            return "PRINT INFORMATION FROM THE INPUT HERE THUS THE LOGIC FOR PRINTING THE INFO IS ENCAPSULATED";
        }
}

打印您的计划中的一个小改动 class :

 public class Planning {


        Main.State[] input;
        Main.State[] output;
        Planning(Main.State[] input,Main.State[] output){
            this.input = input;
            this.output = output;

            for(int i=0;i<input.length;i++){
                System.out.println("The state is " + input[i]);
            }
        }
    }