Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个数组返回到main方法_Java - Fatal编程技术网

Java 将多个数组返回到main方法

Java 将多个数组返回到main方法,java,Java,我的程序假设取一个文本文件,读取前四个名称,创建一个1-4之间的随机数,然后根据随机数将名称分配给4个不同的团队。例如,如果数字是3,那么第一个名字将进入第3组,第二个名字将进入第4组,等等(重复这个过程直到没有更多的名字)。我相信我已经有了所有正确的代码,问题是我不知道如何返回我输入到方法中的数组中的所有名字。这是我的密码: public static void main(String args[]) throws IOException { BufferedReader girlFile =

我的程序假设取一个文本文件,读取前四个名称,创建一个1-4之间的随机数,然后根据随机数将名称分配给4个不同的团队。例如,如果数字是3,那么第一个名字将进入第3组,第二个名字将进入第4组,等等(重复这个过程直到没有更多的名字)。我相信我已经有了所有正确的代码,问题是我不知道如何返回我输入到方法中的数组中的所有名字。这是我的密码:

public static void main(String args[]) throws IOException
{
BufferedReader girlFile = new BufferedReader(new FileReader("girls40.txt"));
PrintWriter teamFile = new PrintWriter(new FileWriter("xxxxxxx-teamlist.txt"));
String team1[] = new String[20];
String team2[] = new String[20];
String team3[] = new String[20];
String team4[] = new String[20];
int n;

n = loadTeams(team1,team2,team3,team4,girlFile);
girlFile.close();
teamFile.close();
}

public static String[] loadTeams(String team1[],String team2[],String team3[],String team[],BufferedReader girlFile)
{
int n;
int random;
String name1;
String name2;
String name3;
String name4;
while((name1=girlFile.readLine())!=null)
  {
    name2=girlFile.readLine();
    name3=girlFile.readLine();
    name4=girlFile.readLine();
    random = 1 + (int)(Math.random() * 4);
    if(random==1)
      {
        team1[n]=name1;
        team2[n]=name2;
        team3[n]=name3;
        team4[n]=name4;
      }
    if(random==2)
      {
        team1[n]=name4;
        team2[n]=name1;
        team3[n]=name2;
        team4[n]=name3;
      }
    if(random==3)
      {
        team1[n]=name3;
        team2[n]=name4;
        team3[n]=name1;
        team4[n]=name2;
      }
    if(random==4)
      {
        team1[n]=name2;
        team2[n]=name3;
        team3[n]=name4;
        team4[n]=name1;
      }
    n++;  
  }
return team1[],team2[],team3[],team4[];
  }`

main方法已提供给我,因此无法更改。

调用
loadTeams()
需要返回类型为
int
的值。不是一个数组或多个数组。如果无法更改main方法,则
loadTeams
应返回一个整数

// ...
int n;
n = loadTeams(team1,team2,team3,team4,girlFile);
// ...

您不必返回任何内容,在main()中创建的数组将通过引用传递给您的方法,您可以在那里填充它们,并且在执行您的方法后,如果
main
方法中的代码比您在此处发布的代码多,则这些数组中的值将保留。您必须说明变量
n
是什么,以及如何使用它,否则请按照答案进行操作

main
方法无法更改

在你的主要方法中

int n;

n = loadTeams(team1,team2,team3,team4,girlFile);
girlFile.close();
teamFile.close();
} // End of Main Method
您没有无故使用返回值
n
。因此,从方法
loadTeams()
返回什么并不重要,只要它是
int

此外,这里的
loadTeams()
返回一个
字符串[]
,该字符串不能被分配为
int n
,您必须将
loadTeams()
的返回类型更改为
int
,如下所示

public static int loadTeams(String team1[],String team2[],String team3[],String team[],BufferedReader girlFile) {
/* 
   ...
 */
      return 0; // whatever, it isn't being used
}
如果您无法更改
main
方法,则此选项将成为解决方案。

  • LoadTeam
    应返回
    int
    而不是
    字符串[]

  • 不需要返回数组。在LoadTeam方法中对数组所做的更改将反映回main方法中的数组