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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 有关ViewPager使用及解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题

    有关ViewPager使用及解决ViewPager和PagerAdapter中调用notifyDataSetChanged失效问题ViewPager是android-support-v4.jar包中的一个系统控件,继承自ViewGroup,专门用以实现左右滑动切换View的效果,使用时需要首先在Project->properties->JavaBuildPath->Libraries->AddExternalJars中加入sdk目录下的extras/android/support/v4/android-support

    2022年7月22日
    9
  • classcastingexception_c++链接错误

    classcastingexception_c++链接错误转载自:http://www.blogjava.net/Sunday/archive/2007/08/18/137860.html现在java编程中经常碰到ClassCastException错误,ClassCastException是JVM在检测到两个类型间的转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。本模式试图为您提供了解和排除ClassCastExcept

    2022年9月9日
    4
  • 此工作站和主域间的信任关系失败原因_主域间的信任关系失败

    此工作站和主域间的信任关系失败原因_主域间的信任关系失败相信用域管理的童鞋都会遇到一个问题:在域账户登录的时候有时会出现“此工作站和主域间信任关系失败”那么遇到这种情况该如何解决的呢?跟我走:拔掉网线,登录系统在用户账户中把administrator账户打开,并设密码插上网线,退域,重启,用administrator账户登录重新加域,刷新策略即可 转载于:https://blog.51cto.com/xkai20/158…

    2022年10月19日
    3
  • spring源码解析之ConfigurationClassPostProcessor分析

    spring源码解析之ConfigurationClassPostProcessor分析

    2021年8月4日
    58
  • 小鹤双拼尝试

    小鹤双拼尝试26个英文字母除了a,o,e,i,u,v(代表ü,下同)之外都被用作声母,而除了这20个声母之外还有3个声母分别为双字母的zh,ch,sh,汉字中绝大部分字的读音都是声母加韵母组成的。而韵母中,除了上述提到的六个字母,其余韵母都是由两个或三个字母组成。小鹤双拼编码方案:第一个字母表示声母,第二字母表示韵母,没有声母时用零声母代替单字母声母韵母键位不变,就意味着26个字母都是和它本来的音相同,比较特殊的就是v,i,u三个(它们也可以拼成yu,yi,wu),当他们被第一个按下时,会代表声母zh,ch,sh

    2022年6月29日
    20
  • python 内置函数详解

    python 内置函数详解

    2021年7月5日
    80

发表回复

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

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