Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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—如何从一个类中的方法中生成变量到另一个类?_Java_Class_Variables_Methods - Fatal编程技术网

Java—如何从一个类中的方法中生成变量到另一个类?

Java—如何从一个类中的方法中生成变量到另一个类?,java,class,variables,methods,Java,Class,Variables,Methods,我仍然是Java的新手,所以请原谅即将摆在你面前的无数noob错误。 所以我要澄清一下。变量是在基于数组的方法中生成的 public class Track { public final int[] classN = { 5, 1 }; public final int[] classD = { 10, 1 }; public final int[] classC = { 15, 2 }; public final int[] classB = { 20, 2 }

我仍然是Java的新手,所以请原谅即将摆在你面前的无数noob错误。 所以我要澄清一下。变量是在基于数组的方法中生成的

public class Track {
    public final int[] classN = { 5, 1 };
    public final int[] classD = { 10, 1 };
    public final int[] classC = { 15, 2 };
    public final int[] classB = { 20, 2 };
    public final int[] classA = { 25, 3 };
    public final int[] classS = { 30, 3 };
    public final int[] classSS = { 50, 3 };
    public final int[][] arTrackClass = { classN, classD, classC, classB, classA, classS, classSS };
    public static final String[] arNameClass = { "N", "D", "C", "B", "A", "S", "SS" };

    public int trackLength = 5; //I need to put it outside of the modifier to get anything else to access it.

    public void getRaceClass() {
        int tClass = (int) Math.floor(Math.random()*arTrackClass.length));
        trackLength = arTrackClass[tClass][0];  //This is the important bit for elsewhere
        tMaxDiff = arTrackClass[tClass][1];
        String nameClass = arNameClass[tClass];
        System.out.println("The track will be a " + nameClass + " class race with " + trackLength + " lengths.");

    }
}
这就是我用来计算轨道长度的方法。长度从5到50。这没问题,对我来说很好。当我稍后尝试调用trackLength来告诉for循环在绘制图形时要循环多少次时,问题就来了

public class Graph {

    public drawGraph() {
        for ( int i=0; i<=Track.trackLength; i++ ) {
            //Code
        }
    }
}
如果需要更多的信息,请告诉我,我会尽可能多地提供。
我只需要在变量生成后调用它。或者,如果其他人有想法,我会一直听取更有经验的人的意见。

您需要提供
Graph
Track
实例,它将与

public class Graph extends ... {
    private Track track;
    //...
    public Graph(Track track) {
        //...
        this.track = track;
        //...
然后当
Graph
需要
Track
中的信息时,它可以简单地使用
Track

public drawGraph() {
    for ( int i=0; i<=track.trackLength; i++ ) {
        //Code
    }
}

图形
类中,您是否创建过
轨迹
的实例或对象?类似于
Track myTrack=new Track()
。从您发布的内容来看,它看起来像是您在
Main
中创建了一个,您可能希望通过构造函数参数传递到
graphing
。将
Track
的引用传递到
Graph
…是的,但即使如此,它仍会调用为外部访问而必须初始化的预设trackLength,您确定方法
getRaceClass()
不仅仅是将变量设置为最初设置的值,而不是在getTrackClass()之后生成的值吗?例如,如果更改
public int trackLength=5
公共整数轨道长度=50您仍然会得到类似的结果吗?是的,如果我手动更改trackLength的值,它会生成大小不同的图形。这就是为什么出于调试原因,我让它将trackClass和随机选择的长度打印到控制台。如果它需要一个长度为50的SS竞赛,它仍然只会向图中写入5个循环。
public drawGraph() {
    for ( int i=0; i<=track.trackLength; i++ ) {
        //Code
    }
}
Track track = new Track();
track.getRaceClass()

Graph graphing = new Graph(track);