我创建了一个包含两个类的java程序。一个类(Main)包含传递到第二个类(Planning)的数据数组。第二个类(Planning)使用此数组为其变量'输入和输出'分配值。代码如下所示:
////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);
}
但是,当我打印输出结尾时输入'它会显示
[LMain $国家; @ 4e98f805
我希望它显示从main函数传递给它的数组。有人可以告诉我怎样才能实现这个目标?
答案 0 :(得分:5)
也许尝试使用System.out.println("The state is " + Arrays.toString(input));
因为打印输入相当于打印input.toString();并打印出数组的内存地址。
请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html
答案 1 :(得分:2)
您可以覆盖toString()
课程中的Planning
方法,因此当您打印出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";
}
}
答案 2 :(得分:0)
只在Planning类中打印一小段更改:
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]);
}
}
}