Return 字符串数组的语句给出了奇怪的结果

Return statement for a string array giving strange result

我正在创建一个字符串数组并使用 System.out.println 打印数组中的值。一切正常,按预期工作,returning [South Africa, England] 但代码不会编译,除非我包含 return 语句,但 return 语句只是转储负载垃圾“[Ljava.lang.String;@85bdf6”。有什么办法可以将 System.out.println 和 return 语句结合起来,使它们做同样的事情,而我只是让 [South Africa, England] 出现?

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

那是因为您有 String[] 作为 return 类型。将其更改为 void ,它会编译得很好。您可以阅读 'garbage' [Ljava.lang.String;@85bdf6 的含义。

but the return statement just dumps out a load of garbage "[Ljava.lang.String;@85bdf6"

那不是 return 语句,那是您对 return 值所做的。 很可能你用过

System.out.println(teamsToProgress());

相反,你应该做你在 teamsToProgress() 中已经做过的事情。

System.out.println(Arrays.toString(teamsToProgress()));

在第一种情况下,您打印数组的 toString() 方法 return 编辑的内容(一些类型信息和哈希码),在第二种情况下,您打印数组的内容.

通常,最好从 teamsToProgress() 中删除 System.out.println(...) 并改为打印 return 值 - 或者使 return 值 void 并且在这种情况下为该方法找到一个更好的名称,例如 void printTeamsToProgress(),因此该方法的意图变得更加清晰。