1.题目描述:
- 编写一个控制台程序,重复输n个学生的信息(学生姓名,年龄,性别),并把这5个学生对象加入到StringBuffer中buffer.append(student),最后输出StringBuffer的内容,输出格式如下:
1.张三 22 男
2.李四 18 女
……
注意每个学生的信息输出一行。
2.问题描述与解决办法
1.问题描述
在给student对象赋值时,出现空指针异常
定义了student类型数组
Student[] students = new Student[5];
在for循环中,直接使用数组对象
System.out.println("请输入第" + (i+1) +"名学生的姓名");
students[i].setName(scanner.next());
2.解决办法:
Student[] students = new Student[5];
这条语句只是创建了n个对象的引用。
需要为每一个对象引用创建新的对象
Student[] students = new Student[5];
for (int i = 0; i < 5 ; i++) {
students[i] = new Student();
3.题目完整代码
student类
package classwork01;
public class Student {
private String name;
private int age;
private String sex;
public Student(){}
public Student(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return ". " +
name + '\t' +
+ age + '\t'
+ sex + '\t' ;
}
}
studentInfo类
package classwork01;
import java.util.Scanner;
/**
* 1. 编写一个控制台程序,重复输n个学生的信息(学生姓名,年龄,性别),
* 并把这5个学生对象加入到StringBuffer中buffer.append(student),
* 最后输出StringBuffer的内容,输出格式如下:
* 1.张三 22 男
* 2.李四 18 女
* ……
* 注意每个学生的信息输出一行。
*/
public class StudentInfo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuffer str = new StringBuffer();
// System.out.println("请输入学生数量");
// int n = scanner.nextInt();
Student[] students = new Student[5];
for (int i = 0; i < 5 ; i++) {
students[i] = new Student();
System.out.println("请输入第" + (i+1) +"名学生的姓名");
students[i].setName(scanner.next());
System.out.println("请输入第" + (i+1) +"名学生的年龄");
students[i].setAge(scanner.nextInt());
System.out.println("请输入第" + (i+1) +"名学生的性别");
students[i].setSex(scanner.next());
String num = String.valueOf(i+1);
str.append(num + students[i] +"\n");
}
System.out.println("----------学生信息----------");
System.out.println(str);
}
}