Java 如何从另一个类访问数组

Java 如何从另一个类访问数组,java,multithreading,Java,Multithreading,我想对main方法中声明的名为“players”的数组进行操作。我想在我的课上用“玩家”来称呼“Glucksspiethread” 我知道我无法访问“players”,因为它是在main方法中声明的,对于其他类不可见 我怎样才能解决这个问题?这是我的密码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Glucksspieltest { p

我想对main方法中声明的名为“players”的数组进行操作。我想在我的课上用“玩家”来称呼“Glucksspiethread” 我知道我无法访问“players”,因为它是在main方法中声明的,对于其他类不可见

我怎样才能解决这个问题?这是我的密码:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Glucksspieltest {
    public static void main(String[] args) {
        int numPlayers = Integer.parseInt(args[0]);
        int threadSize = Integer.parseInt(args[1]);

        ExecutorService es = Executors.newFixedThreadPool(threadSize);
        Glucksspielthread[] players = new Glucksspielthread[numPlayers];
        for (int i = 0; i < numPlayers; i++) {
            players[i] = new Glucksspielthread(i);
            es.execute(players[i]);
        }
    }
}

class Thinker {
    public static void think(int Millisekunden) {
        try {
            Thread.sleep(Millisekunden);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    public static void randomThink(int minMillisekunden, int      maxMillisekunden) {
        System.out.println("test");
    }
}

class Glucksspielthread implements Runnable {
    public int playerNumber;

    Glucksspielthread(int number) {
            playerNumber = number;
    }

    @Override
    public void run() {
        for (int i = 0; i <= playerNumber; i++) {
            // here, I want to operate on array called "players" that is   declared in the main method  
        }
    }
}
导入java.util.concurrent.ExecutorService;
导入java.util.concurrent.Executors;
公共类GluckspielTest{
公共静态void main(字符串[]args){
int numPlayers=Integer.parseInt(args[0]);
int threadSize=Integer.parseInt(args[1]);
ExecutorService es=Executors.newFixedThreadPool(线程大小);
GlucksPiethread[]玩家=新GlucksPiethread[numPlayers];
for(int i=0;i对于(int i=0;i,仅出于测试目的,在GlucksPielTest类中使您的播放机变量为static和public,如下所示:

public class Glucksspieltest {

public static Glucksspielthread[] players;
然后在GlucksPiethread类中访问它,如下所示:

for (int i = 0; i <= playerNumber; i++) {
        // here, I want to operate on array called "players" that is   declared in the main method
        Glucksspieltest.players
    }

for(int i=0;i向class
gluckspieltest
添加一个方法,并使players数组全局化:

public class Glucksspieltest {
    private static Glucksspielthread[] players;

    public static Glucksspielthread[] getPlayers(){
        return players;
    }

    public static void main(String[] args) {
        int numPlayers = Integer.parseInt(args[0]);
        int threadSize = Integer.parseInt(args[1]);

        ExecutorService es = Executors.newFixedThreadPool(threadSize);
        players = new Glucksspielthread[numPlayers];
        for (int i = 0; i < numPlayers; i++) {
            players[i] = new Glucksspielthread(i);
            es.execute(players[i]);
        }
    }
}
公共类gluckspieltest{
私人静态GlucksPiethread[]玩家;
公共静态gluckspiethread[]getPlayers(){
返回球员;
}
公共静态void main(字符串[]args){
int numPlayers=Integer.parseInt(args[0]);
int threadSize=Integer.parseInt(args[1]);
ExecutorService es=Executors.newFixedThreadPool(线程大小);
玩家=新的Glucksspielthread[numPlayers];
for(int i=0;i
这样,您可以通过调用
getPlayers()
方法来获取数组


(注意,建议添加一个构造函数来初始化和填充
players
数组,并将player管理与
main
方法分离。)

将players作为私有全局引用变量

public class Glucksspieltest {
//Make a Global reference variable players
   private static Glucksspielthread[] players; 

// Make a getter Method to get players
 public static Glucksspielthread[] getPlayers(){
    return players;
}

    public static void main(String[] args) {
        int numPlayers = Integer.parseInt(args[0]);
        int threadSize = Integer.parseInt(args[1]);

        ExecutorService es = Executors.newFixedThreadPool(threadSize);

        players = new Glucksspielthread[numPlayers];
        for (int i = 0; i < numPlayers; i++) {
            players[i] = new Glucksspielthread(i);
            es.execute(players[i]);
        }
    }
}
公共类gluckspieltest{
//创建一个全局引用变量
私人静态GlucksPiethread[]玩家;
//制作一个getter方法来获得玩家
公共静态gluckspiethread[]getPlayers(){
返回球员;
}
公共静态void main(字符串[]args){
int numPlayers=Integer.parseInt(args[0]);
int threadSize=Integer.parseInt(args[1]);
ExecutorService es=Executors.newFixedThreadPool(线程大小);
玩家=新的Glucksspielthread[numPlayers];
for(int i=0;i
并通过gluckspieltest.getPlayers()访问它

gluckspiethread类实现可运行{
公共int playerNumber;
私人静态GlucksPiethread[]玩家;
GlucksPiethread(整数){
playerNumber=数字;
}
@凌驾
公开募捐{

对于(int i=0;我将其公开并静态化,只需在类声明后将数组设置为变量字段,您就可以在GlucksPielTest中的任何位置使用它。我想在类“GlucksPielThread”@dumitru中使用它。您的意思是什么?数组?非常感谢,但当我尝试此操作时:for(int i=0;i更好的方法是将其设置为“玩家”私有而不是公共,并通过Gluckspieltest.getterPlayer()访问它。ArvindGangwar这对于生产代码是正确的,正如我仅在测试中提到的那样/以及当我希望阵列中的每个单打玩家都能得到10美元时会发生什么。Gluckspieltest.getplayers[i]行不通。如何在“玩家”的数组字段上使用运算符?
class Glucksspielthread implements Runnable {
    public int playerNumber;

     private static Glucksspielthread[] players;

    Glucksspielthread(int number) {
            playerNumber = number;
    }

    @Override
    public void run() {
        for (int i = 0; i <= playerNumber; i++) {
            // here, I want to operate on array called "players" that is declared in the main method  
         players= Glucksspieltest.getPlayers();  // play with players
        }
    }
}