Java—如何从一个类中的方法中生成变量到另一个类?
我仍然是Java的新手,所以请原谅即将摆在你面前的无数noob错误。 所以我要澄清一下。变量是在基于数组的方法中生成的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 }
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);