美文网首页
JAVA实验作业 JAVA题目

JAVA实验作业 JAVA题目

作者: 秋一哲 | 来源:发表于2019-11-05 09:19 被阅读0次

只供参考,抄袭可耻,复制不一定可以使用

实验6:继承与多态

1.定义一个Employee雇员类,含:姓名、年龄、工资等字段;继承Employee类设计Manager经理类,增加:管理人员数等字段;经理也是一个雇员,每一个员工有自己的经理。(修改已有的程序,即把所有属性都改成private时,相应地方如何修改)

package Word;

class Employee {
    private String name;// 为了代码简单一些暂时不封装
    private int age;
    private float salary;
    private Manager mgr = null;// 表示一个雇员有一个领导
    public void setManager(Manager mgr){
        this.mgr = mgr;
    }
    public Manager getManager(){
        return this.mgr;
    }
    public Employee(String name, int age, float salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String say() {
        return "姓名:" + this.name + ",年龄:" + this.age + ",薪水:" + this.salary;
    }
};

class Manager extends Employee {
    private int number;// 管理人员数

    public Manager(String name, int age, float salary, int number) {
        super(name, age, salary);
        this.number = number;
    }

    public String say() {
        return super.say() + ",管理人员数:" + this.number;
    }
}

public class Work {
    public static void main(String args[]) {
        Employee e = new Employee("李四", 20, 1500);
        Manager m = new Manager("张三", 30, 3000, 5);
        e.setManager(m);// m是e的领导
        System.out.println("雇员信息:" + e.say());
        if (e.getManager() != null)// 为了防止mgr的内容为空,如果为空则肯定出现NullPointerException
            System.out.println("经理信息:" + e.getManager().say());
    }
}

实验5:类与对象

1.编写一个代表三角形的类。其中,三条边为三角型的属性,并封装有求三角形的面积和周长的方法。并设计构造方法和toString() 方法。分别针对三条边为3,4,5和7,8,9的两个三角形进行测试。

package Word;

public class Work {
    public static void main(String[] arg) {
        // Triangle obj = new Triangle(3,4,5);
        Triangle obj = new Triangle(7, 8, 9);
        obj.getArea();
        obj.getPerimeter();
        System.out.print(obj.toString());
    }
}

class Triangle {
    private int a, b, c;

    public Triangle(int d1, int d2, int d3) {
        a = d1;
        b = d2;
        c = d3;
    }

    public void getArea() {
        int p = (a + b + c) / 2;
        double S = Math.sqrt((p * (p - a) * (p - b) * (p - c)));
        System.out.println(S);
    }

    public void getPerimeter() {
        int data;
        data = a + b + c;
        System.out.println(data);
    }

    public String toString() {
        return "a:" + a + "  b:" + b + "  c:" + c;
    }
}

2.编写一个学生类student,属性有:学号、姓名、年龄,将所有学生存储在一个数组中,自拟数据,用数组的初始化方法给数组赋值。并实现如下操作:
① 将所有学生年龄增加一岁;
② 按数组中顺序显示所有学生信息;
③ 查找显示所有年龄大于20岁的学生名单。

public class Work {
    public static void main(String[] arg) {
        Student obj = new Student();
        obj.ageUp();
        obj.show();
        obj.show20();
    }

}

class Student {
    private String id, name, age;
    private int r = 4;
    private String list[][] = { { "001", "学生1", "18" }, { "002", "学生2", "19" },
            { "003", "学生3", "20" }, { "004", "学生4", "21" }, };

    public void ageUp() {
        for (int i = 0; i < r; i++) {
            list[i][2] = Integer.parseInt(list[i][2]) + 1 + "";
            System.out.println(list[i][2]);
        }
    }

    public void show() {
        for (int i = 0; i < r; i++) {
            System.out.printf("学号:%s、姓名:%s、年龄:%s \r", list[i][0], list[i][1],
                    list[i][2]);
        }
    }

    public void show20() {
        for (int i = 0; i < r; i++) {
            if(Integer.parseInt(list[i][2])>20){
                System.out.printf("学号:%s、姓名:%s、年龄:%s \r", list[i][0], list[i][1],
                    list[i][2]);
            }
                
        }
    }

}

实验4

1、 在一个元素值100以内,含20元素的一维整形数组元素中,求最大值、求平均、统计其中素数个数。

package Word;
public class Work {
    public static void print(Object a){
        System.out.println(a);
    }
    private static void tm4_1() {
        //定义数组
        int len = 20;
        int list[] = new int[len];
        //赋初始值
        System.out.println("随机产生的20个元素为:");
        for(int i=0;i<len;i++){
            list[i] = (int) (Math.random()*101);
            System.out.print(list[i]+",");
        }
        System.ou   t.println();
        //求最大值
        int max = getMax(list);
        System.out.println("最大值为:"+max);
        //求平均
        double average = getAverage(list);  
        System.out.printf("平均值为:%.2f \n",average);
        //素数个数
        int number=getSuShu(list);
        System.out.printf("素数的个数为:%d",number);
    }
    private static int getSuShu(int [] list){
        int data=0;
        for(int i=0;i<list.length;i++){
            boolean f=true;
            int listData = list[i];
            for(int j=2;j<listData;j++){
                if(listData % j == 0){
                    f = false;
                    break;
                }
            }
            if(f)data++;
        }
        return data;
    }
    private static int getMax(int [] list){     
        int data = 0;
        for(int i=0;i<list.length;i++){
            if(data<list[i])data=list[i];
        }
        return data;
    }
    private static double getAverage(int [] list){      
        double data;        
        double sum=0;
        for(int i=0;i<list.length;i++){
            sum+=list[i];
        }
        data = sum / list.length;       
        return data;
    }
    public static void main(String[] arge){
        tm4_1();
    }
}

2、编写根据三条边求三角形面积的方法。利用该方法求以下两个三角形面积。
p=(a+b+c)/2,S=√[p(p-a)(p-b)(p-c)]
(1)三条边分别为:3,4,5
(2)三条边分别为:5.3, 6.2, 8

package Word;
public class Work {
    public static void print(Object a) {
        System.out.println(a);
    }

    private static void tm4_2() {
        // 使用方法的重载 根据数据类型的不同自动调用对应函数
        int a = getTriangleArea(3, 4, 5);
        double b = getTriangleArea(5.3, 6.2, 8);
        System.out.printf("三条边分别为:3,4,5 面积为:%d \n"
                + " 三条边分别为:5.3, 6.2, 8 面积为:%f", a, b);
    }

    private static int getTriangleArea(int a, int b, int c) {
        int p = (a + b + c) / 2;
        int S = (int) Math.sqrt((p * (p - a) * (p - b) * (p - c)));
        return S;
    }

    private static double getTriangleArea(double a, double b, double c) {
        double p = (a + b + c) / 2;
        double S = Math.sqrt((p * (p - a) * (p - b) * (p - c)));
        return S;
    }

    public static void main(String[] arge) {
        tm4_2();
    }
}

3、从命令行参数获取两个整数,找出两个整数之间的所有素数,每行输出3个数。

    public static void main(String[] arg) {
        int a = Integer.parseInt(arg[0]);
        int b = Integer.parseInt(arg[1]);
        tm4_3(a, b);
    }
    private static void tm4_3(int a,int b){
        int x;
        if(a>b){
            x = a;
            a = b;
            b = x;
        }
        int sum=0;
        for(int i=a;i<b;i++){            
            boolean f=true;
            
            for(int j=2;j<i;j++){
                if(i % j == 0){
                    f = false;
                    break;
                }
            }
            if(f){
                sum++;
                System.out.print(i+ "   ");
                if(sum % 3==0){
                    System.out.println();
                }
            }
        }
    }

实验3:流程控制语句

1、 用if语句实现主菜单的选择执行(选择)


    private static void tm3_1() {
        Scanner IO = new Scanner(System.in);
        int Students = 0;
        System.out.println("*******************");
        System.out.println("1.增加一个学生");
        System.out.println("2.查看有多少个学生");
        System.out.println("3.退出程序");
        System.out.println("请输入您的选择(1--3)");
        System.out.println("*******************");
        while(true){
            int NumBer = IO.nextInt();
            if(NumBer == 1){
                Students++;
                System.out.println("增加一个学生成功");
            }else if(NumBer == 2){
                System.out.printf("一共有%d个学生 \n",Students);
            }else if(NumBer == 3){
                System.out.println("退出成功");
                break;
            }
        }
    }
    

2、 用switch语句实现主菜单的选择执行(选择)

image.png
private static void tm3_2() {       
        Scanner IO = new Scanner(System.in);
        System.out.println("*******************");
        System.out.println("1.增加一个学生");
        System.out.println("2.查看有多少个学生");
        System.out.println("3.退出程序");
        System.out.println("请输入您的选择(1--3)");
        System.out.println("*******************");
        int Students = 0;
        GOEXIT:
        while(true){
            int NumBer = IO.nextInt();
            switch(NumBer){
                case 1:
                    Students++;
                    System.out.println("增加一个学生成功");
                    break;
                case 2:
                    System.out.printf("一共有 %d 个学生 \r",Students);
                    break;
                case 3:
                    System.out.print("退出成功");
                    break GOEXIT;
            }
        }
    }

3、 从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)

private static void tm3_3_2() {
//      从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)
        System.out.println("请输入a,b,c");
        Scanner IO = new Scanner(System.in);
        int a = IO.nextInt();
        int b = IO.nextInt();
        int c = IO.nextInt();       
        double der_ta = b*b-4*a*c;
        if(der_ta<0){
            System.out.println("无解");
        }
        else if(der_ta>0){
            System.out.println("2个根分别为:");
            System.out.println(-b+Math.sqrt(der_ta));
            System.out.println(-b-Math.sqrt(der_ta));
        }else if(der_ta==0){
            System.out.println("1个根为:");
            System.out.println(-b+Math.sqrt(der_ta));
        }
        

    }
    private static void tm3_3_1() {
//      从键盘输入a,b,c三个实数,计算方程ax2+bx+c=0的根。(选择)
        System.out.println("请输入a,b,c");
        Scanner IO = new Scanner(System.in);
        int a = IO.nextInt();
        int b = IO.nextInt();
        int c = IO.nextInt();       
        double der_ta = b*b-4*a*c;
        switch(der_ta<0?1:der_ta>0?2:3){
            case 1:
                System.out.println("无解");
                break;
            case 2:
                System.out.println("2个根分别为:");
                System.out.println(-b+Math.sqrt(der_ta));
                System.out.println(-b-Math.sqrt(der_ta));
                break;
            case 3:
                System.out.println("1个根为:");
                System.out.println(-b+Math.sqrt(der_ta));
                break;
        }

    }

4、 输出10—100之间的全部素数。所谓素数是指除了1和它本身之外,不能被任何正数整除的数。计算n至少多大时,以下不等式成立。(循环)

private static void tm3_4_3(){
        int i = 10;     
        do{
            
            int j = 2;
            boolean f = true;
            do{
//              System.out.println(j);
                if((i%j)==0){
                    f = false;
                    break;
                }
                j++;
            }while(j<i);
            
            if(f){
                System.out.println(i);
            }
            
            i++;
        }while(i<=100);
    }
    private static void tm3_4_2(){
        int i = 10;
        while(i<=100){
            int j = 2;
            boolean f = true;
            while(j<i){
                if((i%j)==0){
                    f = false;
                    break;
                }
                j++;
            }
            if(f){
                System.out.println(i);
            }
            i++;
        }
    }
    private static void tm3_4_1(){
    /**
     * 输出10—100之间的全部素数。
     * 所谓素数是指除了1和它本身之外,
     * 不能被任何正数整除的数。
     * 计算n至少多大时,以下不等式成立。(循环)
     */
        for(int i=10;i<=100;i++){
            boolean f = true;           
            for(int j = 2;j<i;j++){
                if((i % j) == 0){
                    f = false;
                    break;
                }
            }
            if(f == true){
                System.out.println(i);
            }
        }
    }

5、输入一个长整数,统计该数的数字系列中大于等于4的数字个数(循环)

    private static void tm3_5_2(){
        /**
         * 输入一个长整数,
         * 统计该数的数字
         * 系列中大于等于4的数字个数(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        long NumBer = IO.nextLong();
        int sum = 0;
        
        do{ 
            if(NumBer % 10 >=4){
                sum++;
            }
            NumBer /= 10;
        }while(NumBer*10 / 10 > 0);
        
        System.out.printf("大于等于4的数字个数为:%d个",sum);
    }
    private static void tm3_5_1(){
        /**
         * 输入一个长整数,
         * 统计该数的数字
         * 系列中大于等于4的数字个数(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.prin("请输入一个数字:");
        long NumBer = IO.nextLong();
        int sum = 0;
        while(NumBer*10 / 10 > 0){  
            if(NumBer % 10 >=4){
                sum++;
            }
            NumBer /= 10;
        }
        System.out.printf("大于等于4的数字个数为:%d个",sum);
    }
    
    private static void tm3_5_3(){
        /**
         * 输入一个长整数,
         * 统计该数的数字
         * 系列中大于等于4的数字个数(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        long NumBer = IO.nextLong();
        int sum = 0;
        for(;NumBer*10 / 10 > 0;NumBer /= 10){
            //什么时候执行NumBer /= 10
            if(NumBer % 10 >=4){
                sum++;
            }
        }
        System.out.printf("大于等于4的数字个数为:%d个",sum);
    }

6、 编程实现对输入的字符进行加密,直到按回车结束。加密的规律是:每个字母用其后第4个字母代替,26个字母循环排列,其他字符不变。例如:China!加密为****Glmre!****。(循环)

private static void tm3_6_3(){
        /*
         * 编程实现对输入的字符进行加密,直到按回车结束。
         * 加密的规律是:每个字母用其后第4个字母代替,
         * 26个字母循环排列,其他字符不变。
         * 例如:China!加密为Glmre!。(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.println("请输入您的内容:");
        String text =IO.next();//"China!";
        int len = text.length();
        int i=1;
        do{
            String head = text.substring(0,i-1);
            String middle = text.substring(i-1,i);
            String tail = text.substring(i,len);
            char newMiddle = middle.charAt(0);
            if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
                newMiddle =(char)(newMiddle+4); 
            }
            text = head + newMiddle +tail;  
            i++;
        }while(i<=len);
        System.out.print(text);     
    }
    private static void tm3_6_2(){
        /*
         * 编程实现对输入的字符进行加密,直到按回车结束。
         * 加密的规律是:每个字母用其后第4个字母代替,
         * 26个字母循环排列,其他字符不变。
         * 例如:China!加密为Glmre!。(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.println("请输入您的内容:");
        String text =IO.next();//"China!";
        int len = text.length();
        int i=1;
        while(i<=len){
            String head = text.substring(0,i-1);
            String middle = text.substring(i-1,i);
            String tail = text.substring(i,len);
            char newMiddle = middle.charAt(0);
            if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
                newMiddle =(char)(newMiddle+4); 
            }
            text = head + newMiddle +tail;  
            i++;
        }
        System.out.print(text);     
    }
    private static void tm3_6_1(){
        /*
         * 编程实现对输入的字符进行加密,直到按回车结束。
         * 加密的规律是:每个字母用其后第4个字母代替,
         * 26个字母循环排列,其他字符不变。
         * 例如:China!加密为Glmre!。(循环)
         */
        Scanner IO = new Scanner(System.in);
        System.out.println("请输入您的内容:");
        String text =IO.next();//"China!";
        int len = text.length();
        for(int i = 1;i<=len;i++){
            String head = text.substring(0,i-1);
            String middle = text.substring(i-1,i);
            String tail = text.substring(i,len);
            char newMiddle = middle.charAt(0);
            if(newMiddle<='z'&&newMiddle>='a'||newMiddle<='Z'&&newMiddle>='A'){
                newMiddle =(char)(newMiddle+4); 
            }
            
            text = head + newMiddle +tail;          
        }
        System.out.print(text);     
    }

7、(1+1/2+1/3+……+1/n)>6(循环,可选)

private static void tm3_7_3(){
        /**
         *  (1+1/2+1/3+……+1/n)>6(循环,可选)
         */
        System.out.println("(1+1/2+1/3+……+1/n)>6");
        double n = 0.0;
        for(double x = 1.0;x<=6;x += 1/(n+1)){
            n++;
        }
        System.out.printf("当n=%d时条件成立",(int)n+1);
    }
    private static void tm3_7_2(){
        /**
         *  (1+1/2+1/3+……+1/n)>6(循环,可选)
         */
        System.out.println("(1+1/2+1/3+……+1/n)>6");
        double n = 1.0;
        double x = 1.0;
        while(x<=6){
            x += 1/(n+1);
            n++;
        };
        System.out.printf("当n=%d时条件成立",(int)n);
    }
    private static void tm3_7_1(){
        /**
         *  (1+1/2+1/3+……+1/n)>6(循环,可选)
         */
        System.out.println("(1+1/2+1/3+……+1/n)>6");
        double n = 1.0;
        double x = 1.0;
        do{
            x += 1/(n+1);
            n++;
        }while(x<=6);
        System.out.printf("当n=%d时条件成立",(int)n);
    }
    

实验2:数据类型与表达式

1、输入园的半径,求周长和面积(用控制台和对话框****2****种方法)

2、用产生随机数的方法产生两个1位整数,求其和与积

3、将用户输入的大写字母转换成小写字母。

答案

    private static void tm2_3(){
//      将用户输入的大写字母转换成小写字母。
        Scanner IO = new Scanner(System.in);
        String text = "AN11ssCI";//IO.next();
        int len = text.length();
        String NewText = "";
        for(int i = 0;i<len;i++){
            String MiddleText = text.substring(i,i+1);
            char NewChar = MiddleText.charAt(0);
            if(NewChar<='Z'&&NewChar>='A'){
                NewText += (char)(NewChar+32);              
            }else{
                NewText += NewChar;
            }       
        }
        System.out.println(NewText);
    }
    private static void tm2_2(){
        /*
         * 用产生随机数的方法产生两个1位整数,求其和与积.
         */
        int a =(int) (Math.random()*10);
        int b =(int) (Math.random()*10);
        System.out.printf("a:%d,b:%d,和:%d,积:%d",a,b,a+b,a*b);
        
    }
    

    
    

相关文章

网友评论

      本文标题:JAVA实验作业 JAVA题目

      本文链接:https://www.haomeiwen.com/subject/duljbctx.html