初学JAVA,请高手指教一个小程序错在哪.
/*早上打卡8.30之后关闭机器(关闭系统)检查学生身份是否合法记录当天的打卡时间及学生信息统计全班一个星期早上学生迟到次数根据学好查找某位同学的迟到次数*/public...
/*早上打卡
8.30之后关闭机器(关闭系统)
检查学生身份是否合法
记录当天的打卡时间及学生信息
统计全班一个星期 早上学生迟到次数
根据学好 查找某位同学的迟到次数
*/
public class Student {
final double TIME = 8.30;
public int num;
public double[] time = new double[7];
Student [] stu = new Student[3];
public void setNum(int num)
{
this.num = num;
}
//检查学生是否合法
public boolean check(int num)
{
if(num == this.num)
{
return true;
}
return false;
}
//记录当天的打卡时间和学生信息
public void read(double t,int times)//times表示第几次打卡
{
//this.num = num;
this.time[times - 1] = t;
//return num;
}
//记录全班同学一星期迟到总次数
public int getAllLateTimes()
{
int n = 0;
for(int i = 0;i < 3;i ++)
{
for(int j = 0;j < 7;j ++)
{
if(stu[i].time[j] < TIME)
{
n ++;
}
}
}
return n;
}
//根据学号查看该学生一星期迟到次数
public int getLateTimes(int num)
{
int n = 0;
for(int i = 0;i < 7;i ++)
{
if(stu[num - 1].time[i] < TIME)
n ++;
}
return n;
}
public static void main(String[] args)
{
Student [] stu = new Student[3];//3个学生
Student stu1 = new Student();
Student stu2 = new Student();
Student stu3 = new Student();
stu[0] = stu1;
stu[1] = stu2;
stu[2] = stu3;
for(int i = 0;i < 3;i ++)
{
stu[i].num = i + 1;
}
stu[0].read(8.25, 1);
stu[0].read(8.31, 2);
stu[0].read(8.35, 3);
stu[0].read(8.20, 4);
stu[0].read(8.30, 5);
stu[0].read(8.31, 6);
stu[0].read(8.29, 7);
stu[1].read(8.31, 1);
stu[1].read(8.30, 2);
stu[1].read(8.35, 3);
stu[1].read(8.39, 4);
stu[1].read(8.15, 5);
stu[1].read(8.33, 6);
stu[1].read(8.29, 7);
stu[2].read(8.35, 1);
stu[2].read(8.20, 2);
stu[2].read(8.09, 3);
stu[2].read(8.28, 4);
stu[2].read(8.34, 5);
stu[2].read(8.18, 6);
stu[2].read(8.27, 7);
System.out.println("全班同学一星期总迟到次数为:"+stu1.getAllLateTimes());
int n = 2;
System.out.println("学号为"+2+"的一星期迟到次数为:"+stu1.getLateTimes(n));
}
} 展开
8.30之后关闭机器(关闭系统)
检查学生身份是否合法
记录当天的打卡时间及学生信息
统计全班一个星期 早上学生迟到次数
根据学好 查找某位同学的迟到次数
*/
public class Student {
final double TIME = 8.30;
public int num;
public double[] time = new double[7];
Student [] stu = new Student[3];
public void setNum(int num)
{
this.num = num;
}
//检查学生是否合法
public boolean check(int num)
{
if(num == this.num)
{
return true;
}
return false;
}
//记录当天的打卡时间和学生信息
public void read(double t,int times)//times表示第几次打卡
{
//this.num = num;
this.time[times - 1] = t;
//return num;
}
//记录全班同学一星期迟到总次数
public int getAllLateTimes()
{
int n = 0;
for(int i = 0;i < 3;i ++)
{
for(int j = 0;j < 7;j ++)
{
if(stu[i].time[j] < TIME)
{
n ++;
}
}
}
return n;
}
//根据学号查看该学生一星期迟到次数
public int getLateTimes(int num)
{
int n = 0;
for(int i = 0;i < 7;i ++)
{
if(stu[num - 1].time[i] < TIME)
n ++;
}
return n;
}
public static void main(String[] args)
{
Student [] stu = new Student[3];//3个学生
Student stu1 = new Student();
Student stu2 = new Student();
Student stu3 = new Student();
stu[0] = stu1;
stu[1] = stu2;
stu[2] = stu3;
for(int i = 0;i < 3;i ++)
{
stu[i].num = i + 1;
}
stu[0].read(8.25, 1);
stu[0].read(8.31, 2);
stu[0].read(8.35, 3);
stu[0].read(8.20, 4);
stu[0].read(8.30, 5);
stu[0].read(8.31, 6);
stu[0].read(8.29, 7);
stu[1].read(8.31, 1);
stu[1].read(8.30, 2);
stu[1].read(8.35, 3);
stu[1].read(8.39, 4);
stu[1].read(8.15, 5);
stu[1].read(8.33, 6);
stu[1].read(8.29, 7);
stu[2].read(8.35, 1);
stu[2].read(8.20, 2);
stu[2].read(8.09, 3);
stu[2].read(8.28, 4);
stu[2].read(8.34, 5);
stu[2].read(8.18, 6);
stu[2].read(8.27, 7);
System.out.println("全班同学一星期总迟到次数为:"+stu1.getAllLateTimes());
int n = 2;
System.out.println("学号为"+2+"的一星期迟到次数为:"+stu1.getLateTimes(n));
}
} 展开
1个回答
展开全部
错误还是很多的,大体来说以下几点:
1,当记录迟到次数时,应检查是否>TIME,而不是<TIME。
2.,每一个Student对象是一个学生,在Student类里不应定义Student Array。
3.,在Student类里只需定义一个方法返回这个学生的迟到次数,至于所有学生的迟到次数则在main方法里通过for loop计算得到。
4。最后,一些建议,定义常数像TIME,应该定义为static,否则每个Student对象都会有一个COPY,浪费内存。而其他instance variables一般应定义为private。
1,当记录迟到次数时,应检查是否>TIME,而不是<TIME。
2.,每一个Student对象是一个学生,在Student类里不应定义Student Array。
3.,在Student类里只需定义一个方法返回这个学生的迟到次数,至于所有学生的迟到次数则在main方法里通过for loop计算得到。
4。最后,一些建议,定义常数像TIME,应该定义为static,否则每个Student对象都会有一个COPY,浪费内存。而其他instance variables一般应定义为private。
追问
在Student类里不应定义Student Array???
就是说我不能定义Student[] stu??
追答
不是不能,而是没用。
在main方法里定义的Student [] stu = new Student[3];是有用的,表示三个学生,但在Student类里面定义的Student [] stu = new Student[3];是没用的,也是逻辑上说不通的(定义time下面那行)。
删除public int getAllLateTimes()方法,因为一个Student对象是一个学生,怎么能通过一个学生对象计算所有学生的迟到次数呢?学生1应该根本对学生2一无所知才对。另外getLateTimes()不需要参数,该方法返回该学生的迟到次数,不需要传入学号。
在main方法中
int total=0;
for(int i=0; i<stu.length, ++i) {
total += stu[i].getLateTimes();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询