编辑#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 []。
答案 0 :(得分:0)
在System.out.print("\n"+dict.get(str)+"\n\n");
中,您实际上调用的是int []的字符串,而不是您的Complex对象。这是数组toString的预期输出。