为什么我的程序不打印它接收到的数据而不是地址?
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]);
}
}
}
我创建了一个包含两个 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]);
}
}
}