利用Vector代替数组处理:从键盘读入学生的成绩(以负数代表输入结束),找出最高分,并输出学生成绩等级
- 提示:数组一旦创建,长度就固定不变,所以在创建数组前就需要知道它的长度。而向量类java.util.Vector可以根据需要动态伸缩
- 创建Vector对象:Vector v=new Vector();
- 给向量添加元素:v.addElement(Object obj);
- 取出向量元素:Object obj=v.elementAt(0);
注意:第一个元素下标是0,返回值是object类型
- 计算向量长度:v.size()
- 若与最高分相差10分内:A等 20分内:B等 30分内:C等 其他:D等
import java.util.Vector; import java.util.Scanner; public class StudentTest { public static void main(String[] args) { //创建vector对象 Vector v=new Vector(); //Student s=new Student(); System.out.println("请输入学生成绩,以负数代表输入结束:"); Scanner scan=new Scanner(System.in); while(true) { double num=scan.nextInt(); if(num<0) { scan.close(); break; }else { //double num=scan.nextInt(); Student s=new Student();//必须new多个对象,并将多个对象放入vector容器中,如果没有new多个对象,那就相当于容器中只有一个对象 s.setScore(num); v.addElement(s); } } double max=0; for(int i=0;i<v.size();i++) { //Student st=new Student(); Student st=(Student)v.elementAt(i); //System.out.println(st.getScore()); if(max<=st.getScore()) { max=st.getScore(); } } System.out.println("最高分为:"+max); for(int i=0;i<v.size();i++) { // Student st=new Student(); Student st=(Student)v.elementAt(i); if(st.getScore()>=(max-10)) { st.setGrade("A"); }else if(st.getScore()>=(max-20)&&st.getScore()<(max-10)) { st.setGrade("B"); }else if(st.getScore()>=(max-30)&&st.getScore()<(max-20)) { st.setGrade("C"); }else { st.setGrade("D"); } } //遍历容器 for(int i=0;i<v.size();i++) { // Student s1=new Student(); Student s1=(Student)v.elementAt(i); System.out.println("成绩:"+s1.getScore()+"\t等级:"+s1.getGrade()); } } }