我有一个程序,但我不明白如何在另一个方法中从一个特定对象访问信息。 这是我的程序的一个小样本,我想在同一个类(称为Cyclist)中创建这个方法骑手。我想在这里列出车手名单,但我不明白怎么样......
public void riders() {
//System.out.print(c1.getName())
//this does not work.
//here I want to print out all the names of the riders, i.e. c1's name, c2's name... cn...
}
public void abilities() {
//Pardilla blir til!
Cyclist c1 = new Cyclist();
c1.setName("Sergio Pardilla");
c1.setMountain(75);
c1.setTimeTrial(60);
c1.setSprint(60);
c1.setAge(30);
System.out.println(c1.getName() + "'s abilities:");
System.out.println("Mountain - " + c1.getMountain());
System.out.println("TimeTrial - " + c1.getTimeTrial());
System.out.println("Sprint - " + c1.getSprint());
System.out.println("Age - " +c1.getAge());
}
答案 0 :(得分:1)
骑行者c1被限制在能力方法的范围内,这就是你无法在riders()方法中访问它的原因。
首先,我会在类的顶部声明一个实例范围的骑自行车者ArrayList。
private ArrayList<Cyclist> cyclists = new ArrayList<Cyclist>();
然后,在你的能力方法中,你应该将c1添加到ArrayList骑行者,比如
cyclists.add(c1);
更改了c1的设置后。然后,从riders()方法中,您可以使用
获取c1的名称cyclists.get(0).getName();
答案 1 :(得分:1)
您在riders()方法中无法看到c1变量。 c1在abilities()中声明,然后在其本地声明,只在内部可见。 如果要在此方法之外使用变量,则应使用字段而不是局部变量,或将其作为参数传递给rider方法。
List<Cyclist> cyclists = new ArrayList<>(); // Declared as field
public void riders() {
for (cyclist : cyclists){
System.out.print(cyclist.getName())
}
}
public void abilities() {
//Pardilla blir til!
Cyclist c1 = new Cyclist();
c1.setName("Sergio Pardilla");
c1.setMountain(75);
c1.setTimeTrial(60);
c1.setSprint(60);
c1.setAge(30);
System.out.println(c1.getName() + "'s abilities:");
System.out.println("Mountain - " + c1.getMountain());
System.out.println("TimeTrial - " + c1.getTimeTrial());
System.out.println("Sprint - " + c1.getSprint());
System.out.println("Age - " +c1.getAge());
cyclists.add(c1); //Add cyclist to cyclists list
}
答案 2 :(得分:0)
c1在uilities()方法中本地定义。其他方法无法访问它。您需要能力返回c1,以便您可以在其他方法中使用它,或者您可以在该类中声明一个字段来存储c1。
答案 3 :(得分:0)
简短:您无法从仅在另一个方法中声明的方法中访问对象
1)让riders
接受Cyclist
个对象,然后传递该对象。
或
2)使Cyclist
类广泛可访问:
public class XY {
private Cyclist c1;
public void riders() {
// show stuff
}
public void abilities() {
// init stuff
}
}
此外,如果你想输出所有骑行者,请考虑使用List<Cyclist>
来存储每个Cyclist
对象。