当前位置:首页 > 学习笔记 > Java教程 > Java练习:面向对象的对应练习题

Java练习:面向对象的对应练习题

刘广法2022年03月17日 19:49:05Java教程12320
Java练习:面向对象的对应练习题-第1张图片-刘广法IT博客

Java练习:面向对象的对应练习题

创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。

使用面向对象的思想。

题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。

题目2:按照考试成绩,对这个20个学生进行排序

方法一:刘广法自己的方法(比较难)

Clazz类(班级类):

package liuguangfa.com;

public class Clazz {

	/**
	 * 班级新来学生的名字(随机产生名字)
	 */
	public static String name() {
		String oneName = "";
		// 姓名库
		String surNameStrings = "赵钱孙李周吴郑王";
		String nameStrings = "合理开发计划发乱讲话覅还法海发生了肯定会嘎看来嘎哈啊";
		// 随机产生一个数在1~surNameString.length之间
		int random = (int) ((surNameStrings.length() - 1) * Math.random()) + 1;
		// 返回指定位置的字符
		char surChar = surNameStrings.charAt(random);
		// 返回指定位置的字符两次
		// 随机长生名字
		String nameString = "";
		for (int i = 0; i < 2; i++) {
			// 随机产生一个数在1~nameString.length之间
			int nameRandom = (int) ((nameStrings.length() - 1) * Math.random()) + 1;
			char nameChar = nameStrings.charAt(nameRandom);
			nameString += nameChar;
		}
		oneName = surChar + nameString;
		return oneName;
	}

	/**
	 * 班级新来学生的成绩(产生随机的成绩)
	 */
	public static double result() {
		double resultOne = 0;
		resultOne = (100 - 0) * Math.random();
		// 乘10
		resultOne = resultOne * 10;
		// 取整
		resultOne = (int) resultOne;
		// 除10
		resultOne = resultOne / 10.0;
		return resultOne;
	}

	/**
	 * 班级新来学生的性别(随机生成男女)
	 */
	public static String gender() {
		String oneGender = "";
		// 随机产生一个数,大于0.5就是男的,小于0.5就是女的
		double randomAge = Math.random();
		oneGender = randomAge > 0.5 ? "男" : "女";
		return oneGender;

	}

	/**
	 * 计算所有学生的平均分
	 */
	public static double average(double[] result) {
		// 总成绩
		double sum = 0;
		for (int i = 0; i < result.length; i++) {
			sum += result[i];
		}
		// 平均成绩
		double oneSum = sum / result.length;
		return oneSum;
	}

	/**
	 * 计算男生的成绩
	 */
	public static double manAverage(double[] result, String[] genders) {
		// 总成绩
		double sum = 0;
		// 男生的个数
		int man = 0;
		for (int i = 0; i < result.length; i++) {
			if (genders[i].equals("男")) {
				sum += result[i];
				man++;
			}
		}
		// 平均成绩
		double oneMan = sum / man;
		return oneMan;
	}

	/**
	 * 计算女生的成绩-
	 */
	public static double womanAverage(double[] result, String[] genders) {
		// 总成绩
		double sum = 0;
		// 女生的个数
		int woman = 0;
		for (int i = 0; i < result.length; i++) {
			if (genders[i].equals("女")) {
				sum += result[i];
				woman++;
			}
		}
		// 平均成绩
		double oneWoman = sum / woman;
		return oneWoman;
	}

	/**
	 * 对成绩进行排序(冒泡排序)
	 */
	public static double[] sorting(double[] results) {
		for (int i = 0; i < results.length - 1; i++) {
			for (int j = 0; j < results.length - i - 1; j++) {
				if (results[j] < results[j + 1]) {
					double d = results[j + 1];
					results[j + 1] = results[j];
					results[j] = d;
				}

			}

		}
		return results;
	}

}	

Student类:

package liuguangfa.com;

public class Student {
	// 创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。
	// 使用面向对象的思想。
	// 题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。
	// 题目2:按照考试成绩,对这个20个学生进行排序
	private String name;
	private String gender;
	private double result;

	/**
	 * 学生构造器
	 */
	public Student(String name, String gender, double result) {
		this.name = name;
		this.gender = gender;
		this.result = result;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	public double getResult() {
		return result;
	}

	public void setResult(double result) {
		this.result = result;
	}

}

main方法类:

package liuguangfa.com;

import java.util.Arrays;

public class Test {

	public static void main(String[] args) {
		// 创建20个学生,并按住姓名、性别、成绩依次储存在数组中
		String[] names = new String[20];
		String[] genders = new String[20];
		double[] results = new double[20];
		for (int i = 0; i < 20; i++) {
			Student student = new Student(Clazz.name(), Clazz.gender(), Clazz.result());
			names[i] = student.getGender();
			genders[i] = student.getGender();
			results[i] = student.getResult();
		}
		System.out.println(Arrays.toString(names));
		System.out.println(Arrays.toString(genders));
		System.out.println(Arrays.toString(results));
		// 统计学生的平均分
		double oneResult = Clazz.average(results);
		System.out.println("所有学生的平均分" + oneResult);
		// 统计男生的平均分
		double manAverage = Clazz.manAverage(results, genders);
		System.out.println("所有男生的平均分" + manAverage);
		// 统计女生的平均成绩
		double womanAverage = Clazz.womanAverage(results, genders);
		System.out.println("所有女生的平均分" + womanAverage);
		// 排序
		System.out.println(Arrays.toString(Clazz.sorting(results)));

	}

}

Java控制台输出结果(因为每次的结果都不一样,这里仅作为展示其中的一次):

[孙海嘎, 孙看发, 孙话覅, 吴啊来, 王会发, 孙开会, 孙还发, 吴嘎发, 吴来发, 孙计覅, 孙海开, 钱发理, 周开开, 周定了, 孙发还, 吴还肯, 周哈嘎, 王了理, 吴看计, 孙话还]
[女, 男, 男, 女, 女, 女, 女, 女, 女, 女, 女, 男, 女, 男, 男, 女, 男, 男, 男, 女]
[39.1, 55.8, 70.5, 6.8, 98.6, 69.1, 38.5, 6.7, 66.4, 41.5, 64.9, 69.8, 6.8, 19.5, 93.4, 35.8, 82.0, 70.2, 83.0, 70.1]
所有学生的平均分54.42499999999999
所有男生的平均分68.025
所有女生的平均分45.35833333333334
[98.6, 93.4, 83.0, 82.0, 70.5, 70.2, 70.1, 69.8, 69.1, 66.4, 64.9, 55.8, 41.5, 39.1, 38.5, 35.8, 19.5, 6.8, 6.8, 6.7]

方法二:老师提供的思路方法:

创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。

使用面向对象的思想。

题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。

题目2:按照考试成绩,对这个20个学生进行排序

Student 类:

package liuguangfa.com;
/**
 * 学生类
 * 
 * @author snow1k
 * @date 2022/03/18
 */
public class Student {
    private String name;// 名字
    private String sex;// 性别
    private float score;// 成绩

    public Student(String name, String sex, float score) {
        this.name = name;
        this.sex = sex;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return this.name + ":" + this.sex + ":" + this.score;
    }

}

main方法类:

package liuguangfa.com;

public class Test {
    public static void main(String[] args) {
        // 创建有20个学生对象,每个学生有不同的名字和性别、考试成绩。给这20个学生随机的考试成绩。
        // 使用面向对象的思想。
        // 题目1:统计这20个学生的平均分,男生的平均分,女生的平均分。
        // 题目2:按照考试成绩,对这个20个学生进行排序
        Student[] students = new Student[20];
        String[] sexToken = {"男", "女"};
        for (int i = 0; i < 20; i++) {
            int idx = ((int)(Math.random() * 100)) % 2;
            float score = (float)(Math.random() * 40 + 60);
            Student student = new Student(i + "", sexToken[idx], score);
            students[i] = student;
        }

        // 题目1:
        float sumMale = 0;// 男生总分
        float sumFemale = 0;// 女生总分
        int countMale = 0;// 男生数量
        int countFemale = 0;// 女生数量

        for (int i = 0; i < students.length; i++) {
            Student stu = students[i];
            if (stu.getSex().equals("男")) {
                sumMale += stu.getScore();
                countMale++;
            } else {
                sumFemale += stu.getScore();
                countFemale++;
            }
        }

        System.out.println("男生平均分:" + sumMale / countMale);
        System.out.println("女生平均分:" + sumFemale / countFemale);
        System.out.println("总平均分:" + (sumFemale + sumMale) / students.length);

        // 题目2:排序
        System.out.println(Arrays.toString(students));

        for (int i = 0; i < students.length - 1; i++) {
            for (int j = 0; j < students.length - 1 - i; j++) {
                if (students[j].getScore() < students[j + 1].getScore()) {
                    Student t = students[j];
                    students[j] = students[j + 1];
                    students[j + 1] = t;
                }
            }
        }
        System.out.println(Arrays.toString(students));

    }

}

Java控制台输出结果:

男生平均分:86.026825
女生平均分:82.6319
总平均分:84.32936
[0:女:88.14967, 1:男:67.91951, 2:女:79.77839, 3:女:73.412636, 4:男:88.381805, 5:女:78.10037, 6:女:97.7384, 7:男:92.60951, 8:男:77.45487, 9:女:72.90633, 10:男:95.23342, 11:男:91.788025, 12:女:80.51983, 13:女:71.33554, 14:女:94.32821, 15:女:90.04964, 16:男:95.70284, 17:男:94.68119, 18:男:62.19124, 19:男:94.30583]
[6:女:97.7384, 16:男:95.70284, 10:男:95.23342, 17:男:94.68119, 14:女:94.32821, 19:男:94.30583, 7:男:92.60951, 11:男:91.788025, 15:女:90.04964, 4:男:88.381805, 0:女:88.14967, 12:女:80.51983, 2:女:79.77839, 5:女:78.10037, 8:男:77.45487, 3:女:73.412636, 9:女:72.90633, 13:女:71.33554, 1:男:67.91951, 18:男:62.19124]

文章原创,转载请注意出处,来源:刘广法博客,不保留必追究

扫描二维码推送至手机访问。

版权声明:本文由刘广法博客发布,如需转载请注明出处。

本文链接:https://liuguangfa.com/java/127.html

分享给朋友:

“Java练习:面向对象的对应练习题” 的相关文章

JDK的安装卸载以及环境配置

JDK的安装卸载以及环境配置

一、安装JDK首先应该先下载JDK,下面两个网站都是可以下载:下载地址:https://www.oracle.com/java/technologies/javase-downloads.htmlopenJDK 下载:http://jdk.java.net/下载的的就是下面这样的图标,版本号可能不一...

使用eclipse进行文件的导入和导出

使用eclipse进行文件的导入和导出

该说不说,学会这个项目可以省很多的事情,刘广法可以用这个方法借鉴同学的项目,可以进行参考、借鉴、以及抄作业。一、使用eclipse进行项目的导出:1、使用eclipse进行项目的导出第一步:找到所在的项目工作空间,如果你知道的话,可以直接打开文件进行打包发送给你的好友,如果想要知道项目工作空间如何修...

java教程 第三节:基本数据类型和运算符

一、算术运算符+:加-:减*:乘/:除%:取余例如:a+b、a-b、a*b、a/b、a%b当两个操作数都为整数时,结果必定为整数。当其中一个操作数为小数时,则为小数除。去余数,通常是一对正正整取余数,事实上,对小数和负数一样取余数。小数(浮点数)在计算机中不是精确存在的,并不是精确存在的。二、比较运...

eclipse删除工作空间的详细步骤(图解)

eclipse删除工作空间的详细步骤(图解)

上一次我修改添加eclipce的工作空间,但只我的eclipce上有两个工作空间,今天我想删除一个第一步: Window > Preferences > General > startup and shutdown -->workspace这就是删除eclipse的...

eclipse的快捷键功能

eclipse的快捷键功能

有一些快捷键是可以修改的,具体修改过程如图下:修改快捷的详细步骤:1、使用快捷键调出快捷键列表进行查看:快捷键列表调用:shift + ctrl + L2、window->preferences->general->keys(或直接搜索keys)快捷键列表:shuft + ctrl...

eclipse 修改默认的工作空间以及修改个人工作空间的编码

eclipse 修改默认的工作空间以及修改个人工作空间的编码

一、修改工作空间workspaceFile-->Awitch Workspace-->Other,就打开下面的图,然后选择我标起来的就可以新建工作空间了。二、设置工作空间workspace的编码为UTF-8设置完你所用的工作空间也就是上一步后,需要修改工作空间的编码为UTF-8步骤如下:...

Java练习:找出三位数中所有的水仙花的值

找到三位数中所有为水仙花的值1、水仙花:百位数的立方+十位数的地方+个位数的立方等于这个数本身。2、三位数中。具体的步骤:public static void main(String[] args) { int i =&nbs...

Java练习:从控制台输入一个年份,统计输入的年份到现在一共多少天?

从控制台输入一个年份,统计输入的年份到现在一共多少天?注意事项:1、平年365天,闰年十366天。2月份平年28天,2月份闰年29年。2、今年2022年3月14日3、闰年判断:能够被四百整数;能被4整数但不能被100整数public static void main(S...

用Java实现打印各种图形总结篇(矩形、平行四边形、三角形、菱形)

1、用Java实现打印矩形(长方形、正方形): public static void main(String[] args) { for (int y = 0; y < ...

Java练习:百钱百鸡利用Java进行实现

今有100块钱,需要购买100只鸡,已知鸡的价格是:公鸡5元,母鸡3元,小鸡三只元,问:需要购买多少只公鸡、母鸡、小鸡?Java实现百鸡百钱的方法一: public static void main(String[] args) { for&n...

Java学习 第五节:break和continue关键字

break和continue关键字break:表示中断,退出。退出当前一层循环。一旦break,后面的语句将不会得到执行。continue:中断本次循环,直接进行下一次的循环。continue后面的语句将不会得到执行。...

Java教程 第六节:数组

数组数组:简单来说,就是一组相同数据类型的数。float[] score = new float[6];索引或者下标:必须是整数,不能为负。最大下标等于数组长度-1。float[0],就是float类型数据score的第一个项。数组的下标结合循环,可以简化对批...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。