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

时间:2014-09-09 03:44:04

标签: 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 };
    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
        }
    }
}

然后在我的主要课程中,无论我做什么,我都无法使drawGraph()中的trackLength等于getRaceClass()中生成的trackLength。

public class Main {
    public static void main(String[] args) {
        Track track = new Track();
        track.getRaceClass()

        Graph graphing = new Graph();

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                graphing.createAndShowGUI();
            }
        });
    }
}

如果需要更多信息,请告诉我,我会尽可能多地提供。 我真的需要在生成变量后调用变量。或者,如果其他人有想法,我总是倾听更有经验的人。

1 个答案:

答案 0 :(得分:2)

您需要向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的实例引用传递给Graph,例如......

Track track = new Track();
track.getRaceClass()

Graph graphing = new Graph(track);