我仍然是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();
}
});
}
}
如果需要更多信息,请告诉我,我会尽可能多地提供。 我真的需要在生成变量后调用变量。或者,如果其他人有想法,我总是倾听更有经验的人。
答案 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);