数组中对象的Access属性

时间:2016-04-19 01:15:56

标签: java arrays object

我目前正在努力完成此代码。我明天正在检查我的测试,所以任何帮助都很好!

有关操作的说明在代码中的注释中。

我不确定我在这段代码中做过的任何事情是否真的有效。我目前的主要问题是弄清楚如何计算10个人的总和。你们都可以帮忙吗?

package Fall15Test3;
import java.util.*;

public class Person {
    String name;
    int age;



    public Person(String name, int age) {

    }

    public void setName(String name) {

    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {

    }

    public int getAge() {
        return age;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //Create the array of 10 Person objects.
        Person[] personArray = new Person[10];

        //Initialize the array of persons using user's inputs.
        for (int i = 0; i < personArray.length; i++) {
            System.out.print("Please input name: ");
            String name = input.nextLine();
            System.out.print("Please input age: ");
            int age = input.nextInt();
            personArray[i] = new Person(name, age);
        }

        //Calculate the sum of the ages of the 10 people.
        int ageTotal = 0;
        for (int i = 0; i < personArray.length; i++) {
            ageTotal += WHAT DO I PUT HERE;
        }
        System.out.println(ageTotal);
    }
}

2 个答案:

答案 0 :(得分:4)

循环遍历数组时,可以在循环中的每个索引处访问数组中的对象,并且可以调用对象类型的方法,而无需获取对该对象的其他引用。因此,您可以执行以下操作:

ageTotal += personArray[i].getAge();

这种方法只是直接获取对象,因为personArrayPerson个对象的数组。

您还可以执行以下操作,它将显式获取对数组中指定索引处对象的引用:

for (int i = 0; i < personArray.length; ++i) {
  Person p = personArray[i]; // Make clear we are obtaining the object
  ageTotal += p.getAge();  // get the age set in the Person "p" object
}

编辑:根据一些评论进行更新

您可以使用不同形式的for循环:

for (Person p : personArray) {
  ageTotal += p.getAge();
}

您还可以使用流方法获取总数:

int ageTotal = Arrays.stream(personArray).mapToInt(p -> p.age).sum();
System.out.println(ageTotal);

鉴于您的示例的详细信息,您可以简单地在输入循环中累积ageTotal。但是,我假设有一个单独的循环是其他处理的一个很好的学习示例。

此外,您的Person示例类没有在许多方法中设置名称,年龄(例如,构造函数)。

答案 1 :(得分:1)

这里是您项目的简明代码;但是,复制我的代码将不会教你什么。你需要逐行完成这一过程,并教会自己这一切是什么,这样你才能学到一些东西。现在这不是我编程的方式(我将Person作为一个整体独立的课程远离主要方法)但我不确定你的老师是什么,所以这里是你发布的内容略有修改。

package Fall15Test3;
import java.util.*;

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Person[] personArray = new Person[10];

        for (int i = 0; i < personArray.length; i++) {
            System.out.print("Please input name: ");
            String inputName = input.nextLine();
            System.out.print("Please input age: ");
            int inputAge = input.nextInt();
            personArray[i] = new Person(inputName, inputAge);
        }

        int ageTotal = 0;
        for (int i = 0; i < personArray.length; i++) {
            ageTotal += personArray[i].getAge();
        }
        System.out.println(ageTotal);
    }
}