我目前正在努力完成此代码。我明天正在检查我的测试,所以任何帮助都很好!
有关操作的说明在代码中的注释中。
我不确定我在这段代码中做过的任何事情是否真的有效。我目前的主要问题是弄清楚如何计算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);
}
}
答案 0 :(得分:4)
循环遍历数组时,可以在循环中的每个索引处访问数组中的对象,并且可以调用对象类型的方法,而无需获取对该对象的其他引用。因此,您可以执行以下操作:
ageTotal += personArray[i].getAge();
这种方法只是直接获取对象,因为personArray
是Person
个对象的数组。
您还可以执行以下操作,它将显式获取对数组中指定索引处对象的引用:
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);
}
}