【发布时间】:2014-09-09 03:44:04
【问题描述】:
我还是 Java 新手,所以请原谅即将摆在您面前的无数菜鸟错误。 所以我会澄清的。变量是从基于数组的方法中生成的。
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();
}
});
}
}
如果需要更多信息,请告诉我,我会尽可能提供。 我只需要在生成变量后调用它。或者,如果其他人有想法,我总是愿意听更有经验的人。
【问题讨论】:
-
在您的
Graph类中,您是否曾经创建过Track的实例或对象?像Track myTrack = new Track()这样的东西。从您发布的内容来看,您似乎在Main中制作了一个,您可能希望通过构造函数参数将其传递给graphing。 -
将
Track的引用传递给Graph... -
是的,但即便如此,它也会调用我必须为外部访问初始化的预设 trackLength,而不是在 getTrackClass() 之后生成的那个
-
您确定您的方法
getRaceClass()不只是将变量设置为与您最初设置的值相同的值吗?例如,如果将public int trackLength = 5;更改为public int trackLength = 50;,是否仍会得到类似的结果? -
是的,如果我手动更改 trackLength 的值,它会生成不同大小的图表。这就是为什么出于调试原因,我让它打印 trackClass 并随机选择 Length 到控制台。如果它要求一个长度为 50 的 SS 竞赛,它仍然只会将 5 个循环写入图表。
标签: java class variables methods