题目:
首先为学生创建个类,有三个属性
class student1{
int num;
int state;
int score;
}
创建对象数组,格式为:类名 [] 数组名=new 类名[数组长度],采用动态方法创建数组
student1[] stu=new student1[20];
使用Random来产生随机数
import java.util.Random;
Random random=new Random();
为对象数组赋值,首先需要开辟新空间
for(int i=0;i<stu.length;i++){
stu[i]=new student1(); //为栈空间的对象赋值,在堆空间开辟新地址,把地址给stu[i]
stu[i].num=(i+1); //给学号从1给
stu[i].state=random.nextInt(7); //给年级生成一个随机数,1-6
stu[i].score=random.nextInt(101); //给成绩成随机数,1-100
}
再创建一个打印方法并调用
//打印数组内容
public static void print(student1[] stu){
for(int i=0;i<stu.length;i++){
System.out.println("学号:"+stu[i].num+"年级:"+stu[i].state+"成绩:"+stu[i].score);
}
}
调用方法
print(stu); //调用方法,输出数组内容,将对象数组传过去,只需要数组名即可,传的是数组地址
输出所以三年级学生信息
//输出三年级学生信息
public static void print3(student1[] stu,int state){
for(int i=0;i<stu.length;i++){
if(stu[i].state==3){
System.out.println("学号:"+stu[i].num+"年级:"+stu[i].state+"成绩:"+stu[i].score);
}
}
}
调用方法
print3(stu,3); //输出三年级的信息,传数组和年级,方法那里使用变量接收
按成绩进行冒泡排序
//冒泡排序,交换的不是成绩,而是每个对象
public static void sort(student1[] stu){
for(int i=0;i<stu.length-1;i++){
for(int j=0;j<stu.length-1-i;j++){
if(stu[j].score>stu[j+1].score){
student1 jh=stu[j];
stu[j]=stu[j+1];
stu[j+1]=jh;
}
}
}
}
内存中如下表示,交换的是栈空间的对象(包括三个属性全部交换),而不是堆空间的中某个具体的变量
调用方法
sort(stu); 调用排序
print(stu);最后输出看效果
程序输出结果
学号:1年级:4成绩:76
学号:2年级:3成绩:31
学号:3年级:5成绩:45
学号:4年级:1成绩:18
学号:5年级:4成绩:62
学号:6年级:0成绩:4
学号:7年级:0成绩:11
学号:8年级:3成绩:76
学号:9年级:1成绩:83
学号:10年级:4成绩:36
学号:11年级:1成绩:14
学号:12年级:4成绩:26
学号:13年级:1成绩:41
学号:14年级:1成绩:1
学号:15年级:1成绩:30
学号:16年级:5成绩:17
学号:17年级:3成绩:54
学号:18年级:2成绩:45
学号:19年级:2成绩:66
学号:20年级:1成绩:75
**********************
学号:2年级:3成绩:31
学号:8年级:3成绩:76
学号:17年级:3成绩:54
**********************
学号:14年级:1成绩:1
学号:6年级:0成绩:4
学号:7年级:0成绩:11
学号:11年级:1成绩:14
学号:16年级:5成绩:17
学号:4年级:1成绩:18
学号:12年级:4成绩:26
学号:15年级:1成绩:30
学号:2年级:3成绩:31
学号:10年级:4成绩:36
学号:13年级:1成绩:41
学号:3年级:5成绩:45
学号:18年级:2成绩:45
学号:17年级:3成绩:54
学号:5年级:4成绩:62
学号:19年级:2成绩:66
学号:20年级:1成绩:75
学号:1年级:4成绩:76
学号:8年级:3成绩:76
学号:9年级:1成绩:83
进程已结束,退出代码0
代码如下
package javaLei;
import java.util.Random;
public class javaTest {
public static void main(String[] args) {
student1[] stu=new student1[20];
Random random=new Random();
for(int i=0;i<stu.length;i++){
stu[i]=new student1(); //为栈空间的对象赋值,在堆空间开辟新地址,把地址给stu[i]
stu[i].num=(i+1); //给学号从1给
stu[i].state=random.nextInt(7); //给年级生成一个随机数,1-6
stu[i].score=random.nextInt(101); //给成绩成随机数,1-100
}
print(stu); //调用方法,输出数组内容
System.out.println("**********************");
print3(stu,3); //输出三年级的信息
sort(stu); //对数组排序
System.out.println("**********************");
print(stu);
}
//打印数组内容
public static void print(student1[] stu){
for(int i=0;i<stu.length;i++){
System.out.println("学号:"+stu[i].num+"年级:"+stu[i].state+"成绩:"+stu[i].score);
}
}
//输出三年级学生信息
public static void print3(student1[] stu,int state){
for(int i=0;i<stu.length;i++){
if(stu[i].state==3){
System.out.println("学号:"+stu[i].num+"年级:"+stu[i].state+"成绩:"+stu[i].score);
}
}
}
//冒泡排序
public static void sort(student1[] stu){
for(int i=0;i<stu.length-1;i++){
for(int j=0;j<stu.length-1-i;j++){
if(stu[j].score>stu[j+1].score){
student1 jh=stu[j];
stu[j]=stu[j+1];
stu[j+1]=jh;
}
}
}
}
}
class student1{
int num;
int state;
int score;
}