Java中对象数组的使用

Java中对象数组的使用给你一组学生的数据,比如姓名,性别,学号,成绩,然后根据成绩排序,这时你就得用对象数组啦

大家好,又见面了,我是你们的朋友全栈君。

一、Java数组的使用

对象数组其实和Java的数组类似的,所以要很清楚Java的数组是如何使用的,如果有不懂的可以点下面这个链接Java数组的使用

二、Java的对象数组

2.1 问题提出

为什么会有对象数组呢?假定有这种情况,我们需要录入一个班级同学的姓名,学号,和成绩,然后对成绩进行排序,以降序或者升序进行排列,这个时候就会有人跳出来说,我用一个字符串数组存储姓名,然后再用一个二维数组存放学号和成绩,然后根据程序的高低进行排序。

2.2 问题解析

NONONO!今天我们来教大家如何使用对象数组来解决这个问题,对象数组,我们前面学过Java(OOP)编程—(Java OOP编程),想必大家也对面向对象这个词也会稍微有了一些了解,对象数组就是可以存放多种不同的数据类型,然后我们通过对象来调用我们所存放的数据。

接下来我就来告诉大家如何使用对象数组,完成这个成绩排序的问题

2.3 问题拆分

我们可以把问题简化一下,输入五个学生的成绩,然后进行排序打印输出

  1. 先创建一个学生类
  2. 给学生类添加学生的信息—姓名,学号,成绩,然后分别生成有参和无参的构造方法
  3. 再创建一个学生测试类
  4. 创建对象数组,给对象数组申请 5 个空间
  5. 循环录入信息
  6. 根据学生成绩进行排序,然后打印输出
2.4 代码实现

创建一个学生类的属性,包括学生的姓名,学号,成绩
为了方便,我把两个文件放进了同一个包中使用

package A
/** * @author gorit * @date 2019年4月10日 * 对象数组学生类的创建 * */
public class Student { 
   
	private String name;//学生的姓名
	private int num;//学生的学号信息
	private int grades;//学生的成绩
	
	//有参的构造方法
	public Student(String name, int num, int grades) { 
   
		super();
		this.name = name;
		this.num = num;
		this.grades = grades;
	}

	//无参的构造方法
	public String getName() { 
   
		return name;
	}

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

	public int getNum() { 
   
		return num;
	}

	public void setNum(int num) { 
   
		this.num = num;
	}

	public int getGrades() { 
   
		return grades;
	}

	public void setGrades(int grades) { 
   
		this.grades = grades;
	}

	public Student(){ 
   }

}

然后就是学生类的测试类

package A
/** * @author gorit * @date 2019年4月10日 * 对象数组的实例讲解 * */
import java.util.Scanner;

public class StudentTest { 
   
	public static void main(String[] args) { 
   
		System.out.println("请录入学生姓名,学号、成绩:");
		Scanner in=new Scanner(System.in);
// int[] a=new int[3];对照数组的使用
// 1、创建对象数组,Student类有三个属性,所以传入数据需要传三个数据
		Student[] s=new Student[5];//对象数组的创建是一样的
		for (int i = 0; i < s.length; i++) { 
   
			//还可以一个个输入s[i].getName,s[i].getNum,s[i].getGrade,一个个输入,用下面的方法更加快捷
			s[i]=new Student(in.next(),in.nextInt(),in.nextInt());
		}
		
		Student s1=null;//创建一个为空的对象进行数据交换
		//根据学生的成绩进行排序,这里运用冒泡排序
		for(int i=0;i<s.length;i++) { 
   
			for (int j =0; j < s.length; j++) { 
   
				if(j!=4)//这里必须加上这个条件,不然数字会报出越界的问题
				if(s[j].getGrades()<s[j+1].getGrades()) { 
   
					s1=s[j+1];
					s[j+1]=s[j];
					s[j]=s1;
				}
			}
		}
		
		System.out.println("学生的成绩排名如下\n姓名\t学号\t成绩");
		for (int i = 0; i < s.length; i++) { 
   
			System.out.println(s[i].getName()+"\t"+s[i].getNum()+"\t"+s[i].getGrades());
		}
		
	}
}

程序运行结果
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/157866.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月12日 下午7:00
下一篇 2022年7月12日 下午7:00


相关推荐

  • loc和iloc的用法和区别

    loc和iloc的用法和区别loc 通过行标签索引行数据 iloc 通过行号索引行数据 ix 通过行标签或者行号索引行数据 基于 loc 和 iloc 的混合 标签切片 如 a c 与序列切片如 0 2 不同 后者不包含 index 2 的元素 前者包含结束标签 c 所在的行 布尔类型数组作为标签 例如 True False 等价于 a c 1 locimportnum

    2026年3月26日
    2
  • IP地址,子网掩码、默认网关,DNS服务器是什么意思?

    IP地址,子网掩码、默认网关,DNS服务器是什么意思?IP地址,子网掩码、默认网关,DNS服务器是什么意思?IP地址,子网掩码、默认网关,DNS服务器是什么意思?(一)问题解析001.问:IP地址,子网掩码,默认网关,DNS服务器,有什么区别呀?我知道没有IP地址就不能上网,我也知道没设DNS就不能上外网,可它们都有什么功能,有什么区别呢?还有真奇

    2022年5月3日
    48
  • JAVA缓存机制_JAVA锁机制

    JAVA缓存机制_JAVA锁机制缓存可分为二大类:一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式; 二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查.下面为一个简单的缓存代码Java代码package lhm.hcy.guge.frameset.cache;    import j

    2022年10月4日
    4
  • 经验干货:使用tf.py_func函数增加Tensorflow程序的灵活性

    经验干货:使用tf.py_func函数增加Tensorflow程序的灵活性nbsp nbsp 不知不觉 笔者接触 Tensorflow 也满一年了 在这一年当中 笔者对 Tensorflow 的了解程度也逐渐加深 相比笔者接触的第一个深度学习框架 Caffe 而言 笔者认为 Tensorflow 更适合科研一些 网络搭建与算法设置的自由度也更大 使用 Tensorflow 实现自己的算法也更迅速 nbsp nbsp 但是 笔者认为 Tensorflow 还是有不足的地方 第一体现在 Tensorflow 的数据机制 由于 te

    2026年3月17日
    3
  • 生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及「建议收藏」

    生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及「建议收藏」生存分析(SurvivalAnalysis)、Cox风险比例回归模型(Coxproportionalhazardsmodel)及C-index1.生存分析生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。常见的有1)癌症患者生存时间分析2)工程中的失败时间分析等等。1.1定义给定一个实例iii,我们用一个三元组来表示(Xi,δi,Ti)(X_i,\del…

    2022年5月14日
    48
  • 敏捷开发流程总结

    敏捷开发流程总结

    2021年12月1日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号