技术小站8

网站首页 精选百科 > 正文

java 调用dll(java 面向对象编程)

2022-11-22 19:26:52 精选百科 来源:
导读 大家好,小耶来为大家解答以上的问题。java 调用dll,java 面向对象编程这个很多人还不知道,现在让我们一起来看看吧!1、一共三个类:Scor...

大家好,小耶来为大家解答以上的问题。java 调用dll,java 面向对象编程这个很多人还不知道,现在让我们一起来看看吧!

1、一共三个类:ScoreArray.java、StudentScoreArray.java和Test1.java,具体为:public class ScoreArray {private int[] scores;private int scoreCount;public int[] getScores() {return scores;}public int getScoreCount() {return scoreCount;}//构造函数public ScoreArray(int[] scores) {this.scores = scores;for (int score : scores) {if (score >= 0 && score <= 100) {this.scoreCount++;}}}//求最大值public int getMax() {int[] scores = this.scores;int temp;for (int i = 0; i < scores.length; i++) {for (int j = 0; j < scores.length - 1 - i; j++) {if (scores[j] > scores[j + 1]) {temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}return scores[scores.length - 1];}//求最小值public int getMin() {int[] scores = this.scores;int temp;for (int i = 0; i < scores.length; i++) {for (int j = 0; j < scores.length - 1 - i; j++) {if (scores[j] > scores[j + 1]) {temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}return scores[0];}//求均值public double getAvg() {int sum = 0;for (int score : this.scores) {sum += score;}return new BigDecimal(sum).divide(new BigDecimal(this.scores.length),2, BigDecimal.ROUND_HALF_UP).doubleValue();}//排序public void sort() {int temp;for (int i = 0; i < this.scores.length; i++) {for (int j = 0; j < this.scores.length - 1 - i; j++) {if (this.scores[j] > this.scores[j + 1]) {temp = this.scores[j];this.scores[j] = this.scores[j + 1];this.scores[j + 1] = temp;}}}}//静态说明类public static void explain() {System.out.println("本类[ScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]和排序[sort()]方法");}}public class StudentScoreArray extends ScoreArray {public StudentScoreArray(int[] scores) {super(scores);}//统计public void statistic() {super.sort();Map map = new LinkedHashMap<>();for (int i : super.getScores()) {if (map.containsKey(i)) {map.put(i, map.get(i) + 1);} else {map.put(i, 1);}}map.forEach((k, v) -> System.out.println("分数为[" + k + "]的人数为:[" + v + "]"));}//静态说明类public static void explain() {System.out.println("本类[StudentScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]、排序[sort()]和分布统计[statistic()]方法");}}public class Test1 {public static void main(String[] args) {int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};ScoreArray scoreArray = new ScoreArray(scores);ScoreArray.explain();System.out.print("数组内容:[");for (int i : scoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("有效值个数:" + scoreArray.getScoreCount());System.out.println("最大值:" + scoreArray.getMax());System.out.println("最小值:" + scoreArray.getMin());System.out.println("平均值:" + scoreArray.getAvg());scoreArray.sort();System.out.print("排序后数组内容:[");for (int i : scoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("");System.out.println("========华丽的分割线========");System.out.println("");StudentScoreArray studentScoreArray = new StudentScoreArray(scores);StudentScoreArray.explain();System.out.print("数组内容:[");for (int i : studentScoreArray.getScores()) {System.out.print(i + ",");}System.out.println("]");System.out.println("有效值个数:" + studentScoreArray.getScoreCount());System.out.println("最大值:" + studentScoreArray.getMax());System.out.println("最小值:" + studentScoreArray.getMin());System.out.println("平均值:" + studentScoreArray.getAvg());studentScoreArray.sort();System.out.print("排序后数组内容:[");for (int i : studentScoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("分数分布统计:");studentScoreArray.statistic();}}其中对StudentScoreArray类我要特别说明一下:统计分布情况时,使用了Map,map是一种key-value的数据结构,其有个特点被我所利用:一个map中只能同时存在一个key,所以我以分数为key,以数量为value,遍历分数数组时,如果是第一次遇到这个key(分数),则将其value(数量)置为1;如果已经不是第一次遇见了,则将其value(数量)置为value + 1(数量 + 1)。

2、另外需要遍历这个map实现统计结果的打印,我这里使用了java8以后才支持的Lambda表达式,所以你要运行这个程序必须要使用jdk1.8以上的版本。

3、如果你觉得这样不妥,可以网上再搜一下map的遍历方式。

4、运行结果:啊 代码又一坨的的挤在一起了,百度知道这个真是无语,我把几个关键的地方截个图给你康康:ScoreArray.java成员变量和构造函数忘了说了,构造的同时还统计了有效分数(0~100)的数量求最大值冒泡排序后取最大值求最小值冒泡排序后取最小值求均值利用java 的BigDecimal类解决除法运算精度的问题,四舍五入并保留了两位小数排序就是冒泡排序,从小到大静态的文本说明StudentScoreArray.java:继承分数分布统计注意我说的map那里静态说明文本Test1.java:测试用例都使用的数组:int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};一共三个类:ScoreArray.java、StudentScoreArray.java和Test1.java,具体为:public class ScoreArray {private int[] scores;private int scoreCount;public int[] getScores() {return scores;}public int getScoreCount() {return scoreCount;}//构造函数public ScoreArray(int[] scores) {this.scores = scores;for (int score : scores) {if (score >= 0 && score <= 100) {this.scoreCount++;}}}//求最大值public int getMax() {int[] scores = this.scores;int temp;for (int i = 0; i < scores.length; i++) {for (int j = 0; j < scores.length - 1 - i; j++) {if (scores[j] > scores[j + 1]) {temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}return scores[scores.length - 1];}//求最小值public int getMin() {int[] scores = this.scores;int temp;for (int i = 0; i < scores.length; i++) {for (int j = 0; j < scores.length - 1 - i; j++) {if (scores[j] > scores[j + 1]) {temp = scores[j];scores[j] = scores[j + 1];scores[j + 1] = temp;}}}return scores[0];}//求均值public double getAvg() {int sum = 0;for (int score : this.scores) {sum += score;}return new BigDecimal(sum).divide(new BigDecimal(this.scores.length),2, BigDecimal.ROUND_HALF_UP).doubleValue();}//排序public void sort() {int temp;for (int i = 0; i < this.scores.length; i++) {for (int j = 0; j < this.scores.length - 1 - i; j++) {if (this.scores[j] > this.scores[j + 1]) {temp = this.scores[j];this.scores[j] = this.scores[j + 1];this.scores[j + 1] = temp;}}}}//静态说明类public static void explain() {System.out.println("本类[ScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]和排序[sort()]方法");}}public class StudentScoreArray extends ScoreArray {public StudentScoreArray(int[] scores) {super(scores);}//统计public void statistic() {super.sort();Map map = new LinkedHashMap<>();for (int i : super.getScores()) {if (map.containsKey(i)) {map.put(i, map.get(i) + 1);} else {map.put(i, 1);}}map.forEach((k, v) -> System.out.println("分数为[" + k + "]的人数为:[" + v + "]"));}//静态说明类public static void explain() {System.out.println("本类[StudentScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]、排序[sort()]和分布统计[statistic()]方法");}}public class Test1 {public static void main(String[] args) {int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};ScoreArray scoreArray = new ScoreArray(scores);ScoreArray.explain();System.out.print("数组内容:[");for (int i : scoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("有效值个数:" + scoreArray.getScoreCount());System.out.println("最大值:" + scoreArray.getMax());System.out.println("最小值:" + scoreArray.getMin());System.out.println("平均值:" + scoreArray.getAvg());scoreArray.sort();System.out.print("排序后数组内容:[");for (int i : scoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("");System.out.println("========华丽的分割线========");System.out.println("");StudentScoreArray studentScoreArray = new StudentScoreArray(scores);StudentScoreArray.explain();System.out.print("数组内容:[");for (int i : studentScoreArray.getScores()) {System.out.print(i + ",");}System.out.println("]");System.out.println("有效值个数:" + studentScoreArray.getScoreCount());System.out.println("最大值:" + studentScoreArray.getMax());System.out.println("最小值:" + studentScoreArray.getMin());System.out.println("平均值:" + studentScoreArray.getAvg());studentScoreArray.sort();System.out.print("排序后数组内容:[");for (int i : studentScoreArray.getScores()) {System.out.print(i + " ");}System.out.println("]");System.out.println("分数分布统计:");studentScoreArray.statistic();}}其中对StudentScoreArray类我要特别说明一下:统计分布情况时,使用了Map,map是一种key-value的数据结构,其有个特点被我所利用:一个map中只能同时存在一个key,所以我以分数为key,以数量为value,遍历分数数组时,如果是第一次遇到这个key(分数),则将其value(数量)置为1;如果已经不是第一次遇见了,则将其value(数量)置为value + 1(数量 + 1)。

5、另外需要遍历这个map实现统计结果的打印,我这里使用了java8以后才支持的Lambda表达式,所以你要运行这个程序必须要使用jdk1.8以上的版本。

6、如果你觉得这样不妥,可以网上再搜一下map的遍历方式。

7、运行结果:啊 代码又一坨的的挤在一起了,百度知道这个真是无语,我把几个关键的地方截个图给你康康:ScoreArray.java忘了说了,构造的同时还统计了有效分数(0~100)的数量冒泡排序后取最大值冒泡排序后取最小值利用java 的BigDecimal类解决除法运算精度的问题,四舍五入并保留了两位小数就是冒泡排序,从小到大StudentScoreArray.java:注意我说的map那里Test1.java:测试用例都使用的数组:int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};。

本文到此分享完毕,希望对大家有所帮助。


版权说明: 本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。


标签:




热点推荐
热评文章
随机文章