发现@Override但仍然得到[I @ 232204a1打印输出

时间:2014-09-07 07:19:24

标签: java override

编辑#2:解决了。我只需要直接从数组调用而不是调用整个Map。这很酷,但令人不安,因为这意味着我无法逐行检查代码。

还是: 我在哪里可以阅读更多有关陈述内部运作的内容?我只需要查看我的java目录和html javadocs中的实际文件吗?

我已经在python中编程了大约3个月,并且在一周前刚拿起Java用于大学课程。我已经超越了职责,但最终遇到了一个问题,我的谷歌技能无法修复。

import java.util.Scanner;
import java.util.ArrayList;

import java.util.GregorianCalendar;
import java.util.Date;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;

class Complex {
    private double re;

    public Complex(double re) {
        this.re = re;
    }

    @Override
    public String toString() {
        return String.format(re + "N");
    }
}

public class New {
    public static void main(String[] args) {
        ~~100 lines of functioning code~~
            Map<Complex, int[]> dict = new HashMap<>();
            for (int x = 0; x <= tokens.length - 1; x++) {
                Complex str = new Complex(x);
                int[] anArray = new int[3];

                for (int i = 0; i <= 2; i++) {
                anArray[i] = Integer.parseInt(tokens[x].split("/")[i]);                                                                     
                }
                dict.put(str, anArray);
                System.out.print("\n"+dict.get(str)+"\n\n");
            }

然而,这分别输出“[I @ 75b84c92”和“[I @ 232204a1”表示x值为1和2(类似于3))。我知道这些是目标代码。但是,如果我对循环进行硬编码,我就不会再出错了。

                if(tokens.length == 1) {
                    String[] date1 = tokens[0].split("/");
                    int foo1 = Integer.parseInt(date1[0]);
                    int foo2 = Integer.parseInt(date1[1]);
                    int foo3 = Integer.parseInt(date1[2]);
                } else if (tokens.length == 2) {
                    String[] date1 = tokens[0].split("/");
                    int foo1 = Integer.parseInt(date1[0]);
                    int foo2 = Integer.parseInt(date1[1]);
                    int foo3 = Integer.parseInt(date1[2]);
                    String[] date2 = tokens[1].split("/");
                    int doo1 = Integer.parseInt(date2[0]);
                    int doo2 = Integer.parseInt(date2[1]);
                    int doo3 = Integer.parseInt(date2[2]);
                } else if (tokens.length == 3) {
                    ~~etc. etc. etc. etc.~~

由于最近的回复而编辑:看来我的错误不是来自我的复杂对象,而是在我的print语句中通过另一个隐藏的.toString调用int []。

1 个答案:

答案 0 :(得分:0)

System.out.print("\n"+dict.get(str)+"\n\n");中,您实际上调用的是int []的字符串,而不是您的Complex对象。这是数组toString的预期输出。