A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涂金哲 中级黑马   /  2012-6-4 15:39  /  2811 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
importjava.util.*;
class StudentRecordimplements Serializable      //实现此接口的子类可序列化
{
      private static final long serialVersionUID =122788087250556887L;
      String name;
      String birthday;
      int age;
      String day;
      String phoneNumber;
                                         //构造方法初始化StudentRecord类数据成员
      public StudentRecord(String name,int age,
             String birthday,String phoneNumber,String day)
      {
             this.name=name;
             this.age=age;
             this.birthday=birthday;
             this.phoneNumber=phoneNumber;
             this.day=day;
      }
      void Display()
      {
             System.out.println(name+"\t"+age+"\t"+birthday+"\t"+phoneNumber+"\t"+day);
      }
}
classStudentAccount                         //StudentAccount类中定义Vector向量类存储数据
{
      int num;
      Vector<StudentRecord> rec;
      String filename="Record.dat";
      public StudentAccount()
      {
             rec=newVector<StudentRecord>();
             Input();
             Display();
      }
      void Input()                        //Input方法用于写入数据流到文件,记录数据内容
      {
             try
             {
                    FileInputStream file=new FileInputStream(filename);
                    ObjectInputStream in=new ObjectInputStream(file);
                    rec.setSize(100);
                    rec=(Vector<StudentRecord>)in.readObject();//由一个类型转换的警告提示怎么消除??
                    num=rec.size();
                    file.close();
             }
             catch(Exception e)
             {
             }
}
void Save()                                //Save()方法用于保存输入的数据到指定文件
{
      try
      {
             FileOutputStream fout=new FileOutputStream(filename);
             ObjectOutputStream out=new ObjectOutputStream(fout);
             out.writeObject(rec);
             out.flush();
             fout.close();
      }
      catch(Exception e)
      {
             e.printStackTrace();
      }
}
void Display()
{
      System.out.println("姓名\t年龄\t生日\t\t手机\t\t日期");
      StudentRecord srec;
      for(int i=0;i<num;i++)
      {
             srec=(StudentRecord)rec.get(i);
             srec.Display();
      }
}
void Begin()                              //Begin()方法中Scanner类用于扫描输入内容并记录到向量类中
{
      Scanner in=new Scanner(System.in);
      String continu="y";
      Calendar cal=Calendar.getInstance();
      String day=cal.get(Calendar.YEAR)+""+(cal.get(Calendar.MONTH)+1)+""+cal.get(Calendar.DATE)+"";
      while (continu.equalsIgnoreCase("y"))
      {
             String namerecord="";
             int agerecord;
             String birthdayrecord;
             String phonenumberrecord;
             System.out.println("请输入姓名:");
             namerecord=in.next();
             System.out.println("请输入年龄:");
             agerecord=in.nextInt();
             System.out.println("请输入生日:");
             birthdayrecord=in.next();
             System.out.println("请输入手机号码:");
             phonenumberrecord=in.next();
             StudentRecord sr=newStudentRecord(namerecord,agerecord,birthdayrecord,
                           phonenumberrecord,day);
             rec.addElement(sr);
             System.out.println("还要继续吗(y/n");
             continu =in.next();
      }
      Save();         
}                  
}

public classInformationRecord
{
      public static void main(String[] args)
      {
            StudentAccount rec=new StudentAccount();
             rec.Begin();
      }
}
  红色字体标注的地方由一个警告请问怎么解决??谢谢rec=(Vector<StudentRecord>)in.readObject();//由一个类型转换的警告提示怎么消除??

5 个回复

倒序浏览
Record.dat文件内容
回复 使用道具 举报
你的代码我拿到elipse下全是红叉叉。。你怎么做到将new  class 中间的空格去掉的。。
具体到你的问题,在input方法上加上注解  @SuppressWarnings("unchecked")就可以了,lz应该是还没有开始用eclipse吧,等到你以后用到的时候会发现这种问题根本不是问题,编译器的警告你暂时都可以不用去管他,这里面你用到了一个过时的对象Vector,编译器会警告你,希望你使用ArrayList而已,不用在意

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
闾丘日月 发表于 2012-6-4 15:57
你的代码我拿到elipse下全是红叉叉。。你怎么做到将new  class 中间的空格去掉的。。
具体到你的问题,在in ...


Eclipse 下的警告提示:type safety :unchecked cast from object to vector …不是过时的,提醒。运行结果没问题,主要是看到提示的由object 向vector 的cast 转型出现问题,它应该是从object 类继承来得啊,难道理解上的问题?
丢空格是我从文档拷贝的时候出的问题吧,非常感谢……
回复 使用道具 举报
闾丘日月 发表于 2012-6-4 15:57
你的代码我拿到elipse下全是红叉叉。。你怎么做到将new  class 中间的空格去掉的。。
具体到你的问题,在in ...


Eclipse 下的警告提示:type safety :unchecked cast from object to vector …不是过时的,提醒。运行结果没问题,主要是看到提示的由object 向vector 的cast 转型出现问题,它应该是从object 类继承来得啊,难道理解上的问题?
丢空格是我从文档拷贝的时候出的问题吧,非常感谢……
回复 使用道具 举报
涂金哲 来自手机 中级黑马 2012-6-4 16:49:47
地板
liumeng 发表于 2012-6-4 15:54
Record.dat文件内容

这个文件是程序用来记录输入内容的……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马