黑马程序员技术交流社区
标题:
用集合类添加学生,为什么集合类里只存在第一次添加的学生?后面都添加不上去,求解
[打印本页]
作者:
Maple_枫
时间:
2014-5-12 22:54
标题:
用集合类添加学生,为什么集合类里只存在第一次添加的学生?后面都添加不上去,求解
用集合类添加学生,为什么集合类里只存在第一次添加的学生?
第一个添加学生的功能,只能集合里面只有第一次添加的学生信息,后面再添加的没有。
package com.student;
//学生类
class Student {
private String name,sex;
private int age,on,ranking;
private double java,c_shar,html,sql,sum,avg;
public Student(int on,String name,String sex,int age){
this.on=on;
this.name=name;
if(sex.equals("男")||sex.equals("女")){
this.sex=sex;
}else{
System.out.println("---性别定义不合法,请重新定义---");
}
if(age>0&&age<120){
this.age=age;
}else{
System.out.println("---年龄定义不合法,请重新定义---");
}
}
public int getOn(){
return on;
}
public void setOn(int on){
this.on=on;
}
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getSex(){
return sex;
}
public void setSex(String sex){
if(sex.equals("男")||sex.equals("女")){
this.sex=sex;
}else{
System.out.println("---性别定义不合法,请重新定义---");
}
}
public int getAge(){
return age;
}
public void setAge(int age){
if(age>0&&age<120){
this.age=age;
}else{
System.out.println("---年龄定义不合法,请重新定义---");
}
}
public double getJava(){
return java;
}
public void setJava(double java){
this.java=java;
}
public double getC_shar(){
return c_shar;
}
public void setC_shar(double c_shar){
this.c_shar=c_shar;
}
public double getHtml(){
return html;
}
public void setHtml(double html){
this.html=html;
}
public double getSql(){
return sql;
}
public void setSql(double sql){
this.sql=sql;
}
public double getSum(){
return sum;
}
public void setSum(){
this.sum=this.java+this.c_shar+this.html+this.sql;
}
public double getAvg(){
return avg;
}
public void setAvg(){
this.avg=this.sum/4;
}
public String toString(){
return this.on+"\t"+this.name+"\t"+this.sex+"\t"+this.age
+"\t"+this.java+"\t"+this.c_shar+"\t"+this.html
+"\t"+this.sql+"\t"+this.sum+"\t"+this.avg+"\t"
+this.ranking;
}
}
//主程序类
package com.student;
import java.util.ArrayList;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
ArrayList al=new ArrayList();
Admin adm=new Admin();
while(true){
sop("---欢迎使用学生管理系统---");
sop("【请选择要执行的功能】");
sop("【A】添加学生信息");
sop("【B】删除学生信息");
sop("【C】修改学生信息");
sop("【D】查询学生信息");
sop("【E】输入成绩信息");
sop("【F】成绩排名信息");
sop("【X】退出管理系统");
String num=in.next();
if(num.equals("A")||num.equals("a")){
sop("---执行添加学生信息操作---");
sop("请输入学生的姓名:");
String name=in.next();
sop("请输入学生的性别:");
String sex=in.next();
sop("请输入学生的年龄:");
int age=in.nextInt();
adm.add(al, name, sex, age);
}else if(num.equals("B")||num.equals("b")){
sop("---执行删除学生信息操作---");
sop("请输入学生的学号进行删除:");
int on=in.nextInt();
adm.delete(al, on);
}else if(num.equals("C")||num.equals("c")){
sop("---执行修改学生信息操作---");
sop("请输入学生的学号进行修改:");
int on=in.nextInt();
}else if(num.equals("D")||num.equals("d")){
sop("---执行查询学生信息操作---");
sop("【Q】查询全部学生信息 【Z】 查询指定学生信息");
String s=in.next();
if(s.equals("Q")||s.equals("q")){
adm.show(al);
}else if(s.equals("Z")||s.equals("z")){
sop("请输入学生的学号进行查询:");
int on=in.nextInt();
adm.indexShow(al, on);
}
}
}
}
public static void sop(Object obj){
System.out.println(obj);
}
}
//功能类
package com.student;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Admin {
Scanner in=new Scanner(System.in);
String mxs="学号\t姓名\t性别\t年龄\tJAVA\tC#\tHTML\tSQL\t总分\t平均分\t名次";
//添加学生
public void add(ArrayList al,String name,String sex,int age){
int on=1;
Student student=new Student(1,name,sex,age);
al.add(student);
on++;
System.out.println("添加成功"+al);
}
//删除学生
public void delete(ArrayList al,int on){
Student stu=judge(al,on);
if(stu!=null){
al.remove(stu);
Test.sop("---删除成功---");
}else{
Test.sop("---数据库中没有此学生信息,删除失败---");
}
}
//修改学生信息
public void alter(ArrayList al,int on){
Student stu=judge(al,on);
if(stu!=null){
Test.sop("请输入新学生的姓名:");
stu.setName(in.next());
Test.sop("请输入新学生的性别:");
stu.setSex(in.next());
Test.sop("请输入新学生的年龄:");
stu.setAge(in.nextInt());
Test.sop("---更改学生信息成功---");
Test.sop(mxs);
Test.sop(stu);
}else{
Test.sop("---数据库中没有此学生,请选择添加功能操作---");
}
}
//遍历全部学生信息
public void show(ArrayList al){
Test.sop(mxs);
for(Iterator it=al.iterator();it.hasNext();){
it.next();
}
}
//遍历指定学生信息
public void indexShow(ArrayList al,int on){
Student stu=judge(al,on);
if(stu!=null){
Test.sop(mxs);
Test.sop(stu);
}else{
Test.sop("---数据库中没有此学生---");
}
}
//返回要查找的学生对象
public Student judge(ArrayList al,int on){
for(Iterator it=al.iterator();it.hasNext();){
Student stu=(Student) it.next();
if(stu.getOn()==on){
return stu;
}
}
return null;
}
}
复制代码
作者:
Maple_枫
时间:
2014-5-12 22:56
占楼拿币去黑马!!!
作者:
焚雨成灰
时间:
2014-5-13 23:27
//遍历全部学生信息
public void show(ArrayList al){
Test.sop(mxs);
for(Iterator it=al.iterator();it.hasNext();){
it.next();
}
}
复制代码
it.next()都没有打印,你想看什么
作者:
张耀扬
时间:
2014-5-14 00:13
程序太长,没看
作者:
Jero
时间:
2014-5-14 09:09
还是新手。代码略长 保险起见 每部都打印输出下。 2#说的对。
作者:
Maple_枫
时间:
2014-5-15 20:21
焚雨成灰 发表于 2014-5-13 23:27
it.next()都没有打印,你想看什么
看添加学生的方法里,里面有输入,
作者:
龙健
时间:
2014-5-16 01:18
这样长的代码,眼睛都给我看瞎了。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2