Java语言程序设计【学堂在线】编程作业(第三章)

程序1:教师学生评分

学校要进行年终总结,需要对教师和学生的评分结果进行统计。学生的统计数据有三个,教师的统计数据有四个。请你实现一个统计系统,对输入的数据进行整理。
请你实现一个Person类表示人员,并实现一些必要的方法,再实现Teacher类和Student类,通过类的继承机制完成这个任务。
输入格式:
首先输入一个数字N,表示输入统计的人数。
接下来是N行,每行是用空格隔开的一系列数字。
输出格式:
N行,每行是一个标识符加一个平均得分(向下取整的整数),用空格隔开。
学生的标识符是Student,教师的标识符是Teacher。
输入样例:
2
2 3 4
2 3 4 5
输出样例:
Student 3
Teacher 3

我的程序只得了90分不知道为何,求解。

import java.util.*;  
class Person{
    final String Identity = "persion";
    int[] score;
    public void getScore() {
        for(int m=0;m<score.length;m++) {
             this.score[m] = score[m]; 
        }
    }
    public String getIdentity() {
        return Identity;
    }
    public int average() {
        int sum = 0;
        int avg = 0;
        for(int number = 0; number<this.score.length; number++)
        {
            sum += this.score[number];
        }
        avg = (int)Math.floor(sum/this.score.length);
        return avg;
    }
}
class Student extends Person{
    final String Identity = "Student";
    public String getIdentity() {
        return Identity;
    }
    public int[] setScore(int[] score) {
        return this.score = score;
    }
}
class Teacher extends Person{
    final String Identity = "Teacher";
    public String getIdentity() {
        return Identity;
        }
    public int[] setScore(int[] score) {
        return this.score = score;
    }
}
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int number = Integer.parseInt(in.nextLine());
        String[] str = new String[number];
        for(int i =0;i<number;i++)
        {
            str[i] = in.nextLine();
        }
        for(int n=0;n<number;n++) {
            String[] temp = str[n].split(" ");
            
            if(temp.length == 3) {
                int[] score = new int[3];
                for(int m=0; m<3; m++) {
                    score[m] = Integer.parseInt(temp[m]);
                }
                Student student =new Student();
                student.setScore(score);
                System.out.println(student.getIdentity() + 
                " " + student.average());
            }
            if(temp.length == 4) {
                int[] score =new int[4];
                for(int m = 0; m<4; m++) {
                    score[m] = Integer.parseInt(temp[m]);
                }
                Teacher teacher = new Teacher();
                teacher.setScore(score);
                System.out.println(teacher.getIdentity() +
                 " " + teacher.average());
            }
        }
    }
}

程序作业2:图形面积计算

我们有一些图形的边长数据,这些图形包括三角新和矩形,请你编写一个程序求出它们的面积。
请你实现一个基础图形类Graph,然后实现三角形类Triangle和矩形类Rectangle,继承自Graph。根据输入的边数实现不同的对象,并计算面积。
输入格式:
一行,一个整数n,表示图形个数。
n行,每行是用空格隔开的整数。
输出格式:
n行,每行是一个图形的面积。
输入样例:
2
5 5
6 6 6
输出样例:
25
15

import java.util.*;//导入库
class Graph{
    int[] bc;
}
class Triangle extends Graph{
    public int[] setBc(int[] bc) {
        return this.bc = bc;
    }
    public int acreage() {
        int acre = 0;
        double p = (bc[0]+bc[1]+bc[2])/2.0;;
        return acre = (int) Math.sqrt(p*(p-bc[0])*(p-bc[1])*(p-bc[2]));
    }
    public boolean triangletorf(int i1, int i2, int i3) {
        if(i1+i2<i3||i1+i3<i2||i2+i3<i1)
        {
            return false;
        }
        else
            return true;
    }
    
    
}
class Rectangle extends Graph{
    public int[] setBc(int[] bc) {
        return this.bc = bc;
    }
    public int acreage() {
        int acre = 0;
        return acre =(int) Math.floor(bc[0]*bc[1]);
    }
    
}
public class Main {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        int number = Integer.parseInt(input.nextLine());;
        String[] str = new String[number];
        for(int i =0; i<number;i++) {
            str[i] = input.nextLine();
        }
        for(int j=0;j<number;j++) {
            String[] temp = str[j].split(" ");//以空格为标志对每一行的字符串进行分割,分割成子字符串
            //开始判断图像,首先是矩形
            if(temp.length ==2) {
                int[] bc = new int[2];
                for(int m=0; m<2; m++) {
                    bc[m] = Integer.parseInt(temp[m]);//同样的,字符穿转换成int型
                }
                Rectangle rect = new Rectangle();
                //student.setScore(score);
                rect.setBc(bc);
                System.out.println(rect.acreage());
                //设置长度,输出长度,由于相应类函数还没有写,所以暂时不写
                
            }
            if(temp.length == 3) {
                int[] bc = new int[3];
                for(int m=0;m<3;m++) {
                    bc[m] = Integer.parseInt(temp[m]);
                }
                Triangle tri = new Triangle();
                tri.setBc(bc);
                if(tri.triangletorf(bc[0], bc[1], bc[2])) {
                    System.out.println(tri.acreage());
                }
                
                //设置长度,输出长度,由于相应函数还没有写,所以暂时不写
            }
        }
        
    }
}

程序作业3:多类型排序

我们现在有一些数据,是整数和字符串混杂的。现在需要你将他们分开,并且分别进行排序。
输入格式:
一行,一个数字n,表示元素的格式。
n行,每行一个字符串整数,也可以是其他字符串。
输出格式:
n行,前面一部分为输入的整数字符串按从小到大排序输出,后面一部分为非整数字符串按照字典序从小到大输出。
输入样例:
5
12
ab
bd
32
t
输出样例:
12
23
ab
bd
t

import java.util.*;
/*感谢崔崔写出此程序*/
public class Main {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int number = Integer.parseInt(s.nextLine());//将字符串5转化为数字5
        ArrayList str = new ArrayList();
        ArrayList i=new ArrayList();
        int m=0,n=0;
        for(int j =0;j<number;j++)
        {
            //int c1=0,c2=0;
            if(s.hasNextInt()) {
                i.add(s.nextInt());
                m++;
            }
            else {
                String a = s.next();
                str.add(a);
                n++;
            }
        }
        Collections.sort(i);
        for(int l=0;l<i.size();l++) {
            System.out.println(i.get(l));
        }
        Collections.sort(str);
        for(int k=0;k<str.size();k++) {
            System.out.println(str.get(k));
        }
        
    }
}

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注