代码之家  ›  专栏  ›  技术社区  ›  Goldengirl

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

  •  -4
  • Goldengirl  · 技术社区  · 10 年前

    我创建了一个包含两个类的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})}
    

    另一个班级规划。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$State;@4e98f805

    我希望它显示从主函数传递给它的数组。有人能告诉我如何做到这一点吗?

    3 回复  |  直到 10 年前
        1
  •  5
  •   JFPicard    10 年前

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

    因为打印输入等同于打印输入。toString();并打印阵列的存储器地址。

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

        2
  •  2
  •   Roman    10 年前

    您可以覆盖 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";
            }
    }
    
        3
  •  0
  •   Kulbhushan Singh    10 年前

    要在“计划”类中打印一个小改动:

     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]);
                }
            }
        }