从另一个方法访问对象信息

时间:2014-10-23 11:19:52

标签: java object

我有一个程序,但我不明白如何在另一个方法中从一个特定对象访问信息。 这是我的程序的一个小样本,我想在同一个类(称为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());

    }

4 个答案:

答案 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对象。