java在dos里运行,怎么修改这个错误?(十万火急!)

[复制链接]
查看11 | 回复5 | 2009-4-24 15:51:32 | 显示全部楼层 |阅读模式
/**
文件:InfoModel.java
说明:存储学生信息的类
**/
package com.JavaSeries.Java.component;
import java.io.*;
import java.util.*;
import java.text.*;
import com.JavaSeries.Java.component.Student;
public class InfoModel{
Student [] students;
int NumberOfStudents;
public InfoModel(){}
public void Insert(BufferedReader readStream){}
public void Delete(BufferedReader readStream){}
public void Update(BufferedReader readStream){}
public void Query(){}
public void Load(){}
public void SaveTo(){}
public Date getDate(String date){}
}
public InfoModel(){
students= new Student[100];
NumberOfStudents=0;
}
public void Insert(BufferedReader readStream){
String sno=null;
String name=null;
String sex=null;
String department=null;
String birthday=null;
System.out.println("请输入学生信息!");
try{
System.out.print("请输入学号:");
sno=readStream.readLine();
System.out.print("请输入姓名:");
name=readStream.readLine();
System.out.print("请输入性别:");
sex=readStream.readLine();
System.out.print("请输入出生日期(年-月-日):");
birthday=readStream.readLine();
System.out.print("请输入院系名称:");
department=readStream.readLine();
}catch (IOException e){
e.printStackTrace();
}
students[NumberOfStudents++]=new Student(sno,name,sex,getDate(birthday),department);
}
public Date getDate(String date){
StringTokenizer myDate= new StringTokenizer(date,"-");
int year=Integer.parseInt(myDate.nextToken());
int month=Integer.parseInt(myDate.nextToken());
int day=Integer.parseInt(myDate.nextToken());
Calender now = Calendar.getInstance();
now.clear();
now.set(year,month-1,day);
return now.getTime();
}
public void Delete(BufferedReader readStream){
String sno=null;
System.out.print("请输入学号:");
try{
sno=readStream.readLine();
}catch (IOException e);{
e.printStackTrace();
}
for (int i=0;i<NumberOfStudents;i++){
if (students.Sno.equals(sno))
{for (int j=i;j<NumberOfStudents;j++)
students[j]=students[j+1];
NumberOfStudents--;
break;
}
}
}
public void Query(){
int flag=0;
for (int i=0;i<NumberOfStudents;i++){
flag=1;
System.out.println("--------记录好: "+(i+1)+"---------");
System.out.println(" 学 号: "+students.Sno);
System.out.println(" 姓
名: "+students.name);
System.out.println(" 性
别: "+students.sex);
System.out.println(" 出生年月: "+students.birthday);
System.out.println(" 院系名称: "+students.Departnent);
}
if (flag==0)
System.out.println("目录没有记录");
}
public void Load(){
Date mydate= getDate("1985-1-22");
students[NumberOfStudents++]=new Student("1","张三",男,myDate,"信息管理");
myDate= getDate("198012-12");
students[NumberOfStudents++]=new Student("2","李四","女",myDate,"计算机");
}
public void SaveTo(){
System.out.println("目前没有实现,请完成这个功能!");
}
在dos里运行后出现
InfoModel.java:33: 需要 "class" 或 "interface"
public InfoModel(){

^
是哪里的错误
是用jdk运行的

回复

使用道具 举报

千问 | 2009-4-24 15:51:32 | 显示全部楼层
错误原因:有2个构造函数,都是无参的,java中在同一个类里,不允许有2个方法签名和参数都是一样的情况发生!而且第一个构造方法中又定义了方法,这也是不对的。按你的意思应该将第一个构造方法改成一个接口,然后让这个类去继承这个接口;或者直接将第一个构造方法去掉。解决方法:1.将第一个构造方法去掉。就是去掉这部分:public InfoModel(){}public void Insert(BufferedReader readStream){}public void Delete(BufferedReader readStream){}public void Update(BufferedReader readStrea...
回复

使用道具 举报

千问 | 2009-4-24 15:51:32 | 显示全部楼层
你这里有两个构造方法,并且都是无参数的,JVM无法区分啊!这里的第一个构造方法,你写成一个接口比较好,我这里将你的第一个构造方法写成一个接口,再让你的类来实现这个接口,就可以了呵呵!import java.io.*;import java.util.*;public interface StudentInfoModel { public vo...
回复

使用道具 举报

千问 | 2009-4-24 15:51:32 | 显示全部楼层
因为你定义了两个InfoModel的构造函数,删除一个就可以了...
回复

使用道具 举报

千问 | 2009-4-24 15:51:32 | 显示全部楼层
你这样写当然不行了public InfoModel(){ students= new Student[100]; NumberOfStudents=0; } 你这是什么东西啊 像是构成方法,整体上看又像是个类但有没有class 也不是接口 根据你的意思 你可以把public class InfoModel{ Student...
回复

使用道具 举报

千问 | 2009-4-24 15:51:32 | 显示全部楼层
为什么会有两个相同的构造器?方法重载的原则是:参数不同方法名相同。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行