【问题标题】:Return statement for a string array giving strange result给出奇怪结果的字符串数组的返回语句
【发布时间】:2025-05-12 01:00:01
【问题描述】:

我正在创建一个字符串数组并使用 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;
  }

【问题讨论】:

  • the code won't compile unless I include a return statement - 当您的方法的返回类型不是 void 时,通常会出现这种情况。
  • 您希望该方法将数组返回给它的调用者还是只打印数组?

标签: java arrays string return system.out


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    但是 return 语句只是转储了一堆垃圾“[Ljava.lang.String;@85bdf6”

    这不是 return 语句,这就是你对返回值所做的事情。 很可能你用过

    System.out.println(teamsToProgress());
    

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

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

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

    一般来说,最好从teamsToProgress() 中删除System.out.println(...) 并打印返回值,或者将返回值设为void,在这种情况下为方法找到更好的名称,例如void printTeamsToProgress() ,因此方法的意图变得更加清晰。

    【讨论】:

      最近更新 更多