如何在循环中访问对象字段?

时间:2013-12-08 07:07:52

标签: java arrays eclipse object constructor

我可以访问planetName,但不能访问Surfacematerial,Diameter等,因为它们不在数组和对象中。如何访问循环中的对象及其各自的字段?

import java.util.Scanner;     公共阶层Planet {

    private String[] planetName;
    private String SurfaceMaterial;
    private double daysToOrbit;
    private double diameter;




public Planet(){


    planetName=new String[8];
    SurfaceMaterial="";
    daysToOrbit=0;
    diameter=0;





}


public Planet(String[] planetName, String SurfaceMaterial,double daysToOrbit, double diameter){

    this.planetName=planetName;
    this.SurfaceMaterial=SurfaceMaterial;
    this.daysToOrbit=daysToOrbit;
    this.diameter=diameter;




}

public void setPlanetName(){

    Scanner in=new Scanner(System.in);

    Planet solar[]=new Planet[8];
    for(int i=0;i<solar.length;i++){


        solar[i]=new Planet(planetName,SurfaceMaterial,daysToOrbit,diameter);
        System.out.println("Enter Planet Name::");
        planetName[i]=in.next();
        System.out.println("Enter Surface Material");
        SurfaceMaterial=in.next();
        System.out.println("Enter Days to Orbit");
        daysToOrbit=in.nextDouble();
        System.out.println("Enter Diameter");
        diameter=in.nextDouble();
    }

    for(int i=0;i<solar.length;i++){
    System.out.println(planetName[i]);
    System.out.println(this.SurfaceMaterial); //This returns only one value that has been entered at the last
    }


}









}   


    public static void main(String[] args) {

        Planet planet=new Planet();
        Scanner input=new Scanner(System.in);

    planet.setPlanetName();




        }
    }

2 个答案:

答案 0 :(得分:2)

只需访问以下

object[index].member ... // or call getter setter

在你的情况下说第一个成员名称是名称..所以像

一样调用
staff[0].name // this will return BOB

答案 1 :(得分:0)

staff数组在构造函数中声明为local:或者如果在类上下文中声明它,则隐藏它。因此,在类上下文中声明staff数组,然后在构造函数中初始化:

class Test
{
  public Full_time [] Staff;

  public Test()
  {

    Staff = new Full_time [4];

    Staff [0] = new Full_time("BoB", 2000, 70000);
    Staff [1] = new Full_time("Joe", 1345, 50000);
    Staff [2] = new Full_time("Fan", 3000, 80000);

  }
}

然后,在主要功能中:

public static void main(String[] args) {
    Tester t = new Tester();

    t.staff[i].name = "A Name";
}

但是,建议不要直接访问成员字段,而是使用getter或setter函数,如:getStaff(i)等。