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

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

刘广法2022年03月17日 19:49:05Java教程8690
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/

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

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

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

分享给朋友:

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

Java教程 第二节:基本数据类型与变量

一、关键词在java中有特殊含义的一些词,比方说 public class 等。break;break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。break 跳出最里层的循环,并且继续执行该循环下面的语句。二、标识符起唯一标识作用的,类似我们自己的姓名,学校中的学号,公司中的工...

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

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

Java教程 第四节:流程控制语句总结

流程控制语句:一、顺序结构顺序结构:按照写代码的顺序 一次执行二、分支结构1、if语句if(条件){     语句块 }2、if...else...语句if(条件){     语句块 }else{  ...

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

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

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

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

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

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

eclipse 如何更换JDK版本 替换自带的JDK版本

eclipse 如何更换JDK版本 替换自带的JDK版本

设置jdk,用安装的JDK替换eclipse自带的JDK(详细步骤)1、Window-->Presferences2、进入后,搜索“java”,找到“Installed JRES”3、删除自带的JDK:选中自带的jdk,然后选择remove。4、添加自己安装的JDK:选中右边的Add,选择St...

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练习:打印出所有3位数的素数

课堂练习:打印出所有3位数的素数。素数:只能被1和其本身整除的数 public static void main(String[] args) { // 打印三位数的素数,素数只能被1和本身整数的数。 for (int...

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

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

Java练习:控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成绩最小值

有控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成绩最小值 public static void main(String[] args) { // 有控制台输入十个成绩,编程对这些成绩取平均值,并判断出成绩最大值和成...

发表评论

访客

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