我正在创建一个String数组并使用System.out.println来打印数组中的值。所有的好,并按预期工作,返回[南非,英格兰]但代码将不会编译,除非我包含一个return语句,但return语句只是抛出一堆垃圾“[Ljava.lang.String; @ 85bdf6” 。有没有什么方法可以将System.out.println和return语句结合起来,这样他们就可以做同样的事了,我只是出现了[南非,英格兰]?
public String[] teamsToProgress()
{
Arrays.sort(teams);
String[] teamsToProgress;
teamsToProgress = new String[2];
String team1 = teams[0].getName();
String team2 = teams[1].getName();
teamsToProgress[0] = team1;
teamsToProgress[1] = team2;
System.out.println(Arrays.toString(teamsToProgress));
return teamsToProgress;
}
答案 0 :(得分:2)
那是因为你有each
作为返回类型。将其更改为String[]
,它将编译得很好。您可以阅读here'垃圾'void
的含义。
答案 1 :(得分:1)
但是return语句只是抛出一堆垃圾“[Ljava.lang.String; @85bdf6”
这不是返回语句,这就是你对返回值的处理方式。 很可能你用过
System.out.println(teamsToProgress());
相反,您应该已经完成了teamsToProgress()
已经完成的工作。
System.out.println(Arrays.toString(teamsToProgress()));
在第一种情况下,您打印数组的toString()
方法返回的内容(某些类型信息和哈希代码),在第二种情况下,您打印数组的内容。
一般来说,最好从System.out.println(...)
中删除teamsToProgress()
并打印返回值 - 或者返回值void
,在这种情况下找到更好的名称像void printTeamsToProgress()
这样的方法,因此方法的意图变得更加清晰。