学堂在线Java程序设计编程题第三章节

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

import java.util.Scanner;
abstract class Person {
    public abstract int Average();
}
class Student extends Person {
    private int x; private int y;
    private int z;
    public   Student(int x,int y,int z) {
        this.x=x; this.y=y;
        this.z=z;
    }

    public int Average() {
        return  (int) Math.floor((x+y+z)/3);
    }
}
class Teacher extends Person{
    private int x; private int y;
    private int z; private int m;
    public   Teacher(int x,int y,int z,int m) {
        this.x=x;this.y=y;
        this.z=z;this.m=m;
    }
    public int Average() {
        return (int) Math.floor((x+y+z+m)/4);
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine().trim());
        for(int i = 0; i < n; i++){
            String s = in.nextLine().trim();
            String []t = s.split(" ");
            
            int a = Integer.parseInt(t[0]);
            int b = Integer.parseInt(t[1]);
            int c = Integer.parseInt(t[2]);
            
            if(t.length == 3){
                Student st = new Student(a,b,c);
                System.out.println("Student " + st.Average());
            }
            if(t.length == 4){
                int d = Integer.parseInt(t[3]);
                Teacher te = new Teacher(a,b,c,d);
                System.out.println("Teacher " + te.Average());
            }
        }
        in.close();
    }
}

多类型排序

我们现在有一些数据,是整数和字符串混杂的。现在需要你将他们分开,并且分别进行排序。 
请你利用泛型实现一个数组类,并且实现排序函数,使得其既可以对Integer类型进行排序,又可以对String类型进行排序。然后利用你实现的这个类完成上面的任务。
输入格式:
一行,一个数字n,表示元素的个数。
n行,每行一个字符串整数,也可以是其他字符串。
输出格式:
n行,前面一部分为输入的整数字符串按从小到大排序输出,后面一部分为非整数字符串按照字典序从小到大输出。
输入样例:
5
12
ab
bd
23
t
输出样例:
12
23
ab
bd
t

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

class Array<T> {
    private T[] array1;
    private int i;

    public Array(int size) {
        array1 = (T[]) new Object[size];
    }

    public void add(T item) {
        array1[i++] = item;
    }

    public T[] getArray1() {
        return array1;
    }

    public int getInt() {
        return i;
    }

    public void sort() {
        Arrays.sort(array1, 0, i);
    }

    public String toString() {
        StringBuilder result = new StringBuilder();
        for (T item : array1)
            if (item != null) {
                String str = String.valueOf(item) + '\n';
                result.append(str);
            }
        return result.toString();
    }

}

public class Main {
    public static boolean isNum(String str) {
        Pattern pattern = Pattern.compile("^?[\\d]*$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        }
        return true;
    }

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int num = cin.nextInt();
        Array<Integer> integerArray = new Array<Integer>(num);
        Array<String> stringArray = new Array<String>(num);
        for (int i = 0; i < num; i++) {
            String str = cin.next();
            if (isNum(str))
                integerArray.add(Integer.parseInt(str));
            else
                stringArray.add(str);
        }
        integerArray.sort();
        stringArray.sort();
        System.out.println(integerArray.toString() + stringArray.toString());
    }
}

猜你喜欢

转载自blog.csdn.net/qq_41722524/article/details/86937960
今日推荐