49.【Java 基础之对象数组(偏难)】

简介: 49.【Java 基础之对象数组(偏难)】

1.对象数组的定义:

对象数组就是数组里的每个元素都是类的对象,赋值时先定义对象,然后将对象直接赋给数组就行了。

2.对象数组的定义格式:

类名 []类对象 =new 类名[参数];  //定义类对象数组
   类名 类对象 =new 类名(); //定义类对象

3.基本演练(设置对象数组)

类文件:

import java.util.Random;
public class Sort {
    private String id;
    private String name;
    private double price;
    private int count;
    public Sort() {
    }
    public Sort(String id, String name, double price, int count) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.count = count;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
}

主文件:

import java.util.Random;
public class hello {
    public static void main(String []avgs) {
        Sort []s=new Sort[3];    //设置对象数组的格式:
        s[0]=new Sort("01","水杯",21,20);
        s[1]=new Sort("02","MAYI ",25,20);
        s[2]=new Sort("03","sdsfd",28,30);
        for(int i=0;i<s.length;i++){
            System.out.println(s[i].getName()+" "+s[i].getId()+" "+s[i].getCount()+" "+s[i].getPrice());
        }
    }
}

4.基本演练 (键盘输入对象数组)

类文件:

import java.util.Random;
public class Sort {
private String breed;
private int price;
private String color;
public Sort(){}
    public Sort(String breed,int price,String color){
    this.breed=breed;
    this.price=price;
    this.color=color;
    }
    public String getBreed() {
        return breed;
    }
    public void setBreed(String breed) {
        this.breed = breed;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
}

主文件:

import java.util.Random;
import java.util.Scanner;
public class hello {
    public static void main(String []avgs) {
        Scanner sc = new Scanner(System.in);
       Sort []s=new Sort[3];         //设置对象数组
       for(int i=0;i<s.length;i++){
           Sort ss=new Sort();      //设置对象ss
           System.out.println("请输入汽车的品牌:");
           String breed=sc.next();
           ss.setBreed(breed);
           System.out.println("请输入您的价格:");
           int price=sc.nextInt();
           ss.setPrice(price);
           System.out.println("请输入您的颜色:");
           String color=sc.next();
           ss.setColor(color);
           s[i]=ss;     //把ss传给对象数组
       }
       for(int i=0;i<s.length;i++){
           System.out.println(s[i].getBreed()+" "+s[i].getPrice()+" "+s[i].getColor());
       }
    }
}

5.对象数组基本演练(求平均值且判断)

类文件:

import java.util.Random;
public class Sort {
private String breed;
private int price;
private String color;
public Sort(){}
    public Sort(String breed,int price,String color){
    this.breed=breed;
    this.price=price;
    this.color=color;
    }
    public String getBreed() {
        return breed;
    }
    public void setBreed(String breed) {
        this.breed = breed;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
}

主文件;

import java.util.Random;
import java.util.Scanner;
public class hello {
    public static void main(String []avgs) {
        Scanner sc = new Scanner(System.in);
       Sort []s=new Sort[3];
       for(int i=0;i<s.length;i++){
           Sort ss=new Sort();
           System.out.println("请输入汽车的品牌:");
           String breed=sc.next();
           ss.setBreed(breed);
           System.out.println("请输入您的价格:");
           int price=sc.nextInt();
           ss.setPrice(price);
           System.out.println("请输入您的颜色:");
           String color=sc.next();
           ss.setColor(color);
           s[i]=ss;
       }
       double sum=0.0;
        for(int i=0;i<s.length;i++){
            sum+=s[i].getPrice();
        }
        System.out.println("平均值为:"+(sum/3));
        int count=0;
        for(int i=0;i<s.length;i++){
            if((sum/3)>=s[i].getPrice()){
                count++;
                System.out.println(s[i].getBreed()+" "+s[i].getPrice()+" "+s[i].getColor());
            }
        }
        System.out.println("比平均值低的有:"+count+"个");
    }
}

6.超级综合训练:

定义一个长度为3的数组,数组储存1~3名学生对象作为初始数据,学生对象的学号、姓名各不相同。

学生的属性:学号,兴民,年龄。

要求1.再次添加一个学生对象,并在添加的时候进行唯一性判断.

要求2:添加完毕之后,遍历所有学生的信息

要求3:通过id删除学生信息,如果存在,则删除。如果不存在则提示失败

要求4:删除完毕之后,遍历所有的学生信息。

要求5:查询数组id为 21032114 的学生,如果存在,则将他的年龄+1;

类文件:

import java.util.Random;
public class Sort {
    private String name;
    private int  number;
    private int age;
    public Sort() {
    }
    public Sort(String name, int number, int age) {
        this.name = name;
        this.number = number;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

主文件:

1.判断是否学号相等:

public static boolean judgeSimlar(Sort []s,int id){
        for(int i=0;i<s.length;i++){
            if(s[i].getNumber()==id){
                return true;
            }
        }
        return false;
    }  //

2.判断原始数组是否已经沾满

public static int  Count(Sort[]s){
        int count=0;
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){        //假如说不为空的前提下,有多少个空间
            count++;}
        }
        return count;
    } //判断下表数量

3.创造新的数组

public static Sort[] CreatArr(Sort[]s){
        Sort []newArr=new Sort[s.length+1];
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
            newArr[i]=s[i];}
        }
        return newArr;
    } //创造心得数组

4.打印遍历:

public static void show(Sort[]s){
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
            System.out.println(s[i].getName()+" "+s[i].getNumber()+" "+s[i].getAge());
        }
        }
    }//打印输出

5.删除元素:

public static void cc(Sort[]s,int id){
        if(clear(s,id)<0){  //假如说不存在
            System.out.println("不存在删除失败!");
        }
        if(clear(s,id)>=0){
            s[clear(s,id)]=null;
            show(s);
        }
    }//删除元素

6.判断id是否相等

public static int clear(Sort[]s,int id){
        int i=0;
        for(i=0;i<s.length;i++){
            if(s[i]!=null){
                if(s[i].getNumber()==id){
                    return i;
                }
            }
        }
        return -1;
    }//判断是否是相同的id

7.增加年龄

public static void add(Sort[]s,int id){
        int number=0;
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
                if(clear(s,id)<0){
                    System.out.println("不存在");
                }
                else {
                    number=s[i].getAge();
                    number+=1;
                }
            }
        }
        System.out.println(number);
    }

完整主文件:

public class hello {
    public static void main(String []avgs) {
    Sort []s=new Sort[3];
    s[0]=new Sort("小明",21032114,25);
    s[1]=new Sort("小红",21032115,20);
    s[2]=new Sort("小黑",21032116,23);
    Sort s4=new Sort("小紫",21032118,20);
    int id=s4.getNumber();
    //进行判断是否有相同的id,有相同的就让他们重新输入.不相同的话继续判断里面的内存问题,然后再进行输出
        boolean flag=judgeSimlar(s,id);
        if(flag){
            System.out.println("您输入的信息已经存在,请您在输入一个数字!");
        }
        else{
            //假如说不相同的话,就要添加数组了,此时我们要考虑一下内存的问题,如果内存狗的话那么就直接写,内存不够的话就要重新加u
            if(s.length==Count(s)){    //假如说相等的话,就要新加一个数组
                Sort []newArr=CreatArr(s);//实际上是 :new Sort[s.length+1];
                newArr[newArr.length-1]=s4;
               // cc(newArr,21032115);
                add(newArr,21032115);
            }
            else{     //假如说没有满的情况下,那么我们就把它直接操作,下标就是我们添加的位置
                    s[Count(s)]=s4;
                //cc(s,21032115);  删除
                add(s,21032115);
            }
        }
    }
    public static void add(Sort[]s,int id){
        int number=0;
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
                if(clear(s,id)<0){
                    System.out.println("不存在");
                }
                else {
                    number=s[i].getAge();
                    number+=1;
                }
            }
        }
        System.out.println(number);
    }
    public static int clear(Sort[]s,int id){
        int i=0;
        for(i=0;i<s.length;i++){
            if(s[i]!=null){
                if(s[i].getNumber()==id){
                    return i;
                }
            }
        }
        return -1;
    }//判断是否是相同的id
    public static void cc(Sort[]s,int id){
        if(clear(s,id)<0){  //假如说不存在
            System.out.println("不存在删除失败!");
        }
        if(clear(s,id)>=0){
            s[clear(s,id)]=null;
            show(s);
        }
    }//删除元素
    public static void show(Sort[]s){
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
            System.out.println(s[i].getName()+" "+s[i].getNumber()+" "+s[i].getAge());
        }
        }
    }//打印输出
    public static Sort[] CreatArr(Sort[]s){
        Sort []newArr=new Sort[s.length+1];
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){
            newArr[i]=s[i];}
        }
        return newArr;
    } //创造心得数组
    public static int  Count(Sort[]s){
        int count=0;
        for(int i=0;i<s.length;i++){
            if(s[i]!=null){        //假如说不为空的前提下,有多少个空间
            count++;}
        }
        return count;
    } //判断下表数量
    public static boolean judgeSimlar(Sort []s,int id){
        for(int i=0;i<s.length;i++){
            if(s[i].getNumber()==id){
                return true;
            }
        }
        return false;
    }  //
        }


相关文章
|
11小时前
|
Java
解析java中的数组
解析java中的数组
7 3
|
1天前
|
Java
Java一分钟之-类与对象:面向对象编程入门
【5月更文挑战第8天】本文为Java面向对象编程的入门指南,介绍了类与对象的基础概念、常见问题及规避策略。文章通过代码示例展示了如何定义类,包括访问修饰符的适当使用、构造器的设计以及方法的封装。同时,讨论了对象创建与使用时可能遇到的内存泄漏、空指针异常和数据不一致等问题,并提供了相应的解决建议。学习OOP需注重理论与实践相结合,不断编写和优化代码。
14 1
|
1天前
|
存储 安全 Java
Java一分钟之-数组的创建与遍历
【5月更文挑战第8天】本文介绍了Java中数组的基本概念、创建与遍历方法,强调了类型匹配和数组越界问题。示例展示了如何创建整数数组并初始化元素,同时提供了避免数组越界的策略。对于遍历,文章提到了for循环和增强型for循环,并给出了防止错误的建议,如正确声明类型、初始化数组、安全索引操作及使用合适的数据结构。遵循这些指导可帮助开发者有效管理Java数组并减少错误。
11 0
|
7天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
27 4
|
10天前
|
存储 Java 索引
Java数组
Java数组
21 0
|
10天前
|
Java 编译器
【Java探索之旅】解密构造方法 对象初始化的关键一步
【Java探索之旅】解密构造方法 对象初始化的关键一步
16 1
|
10天前
|
存储 算法 Java
【Java探索之旅】掌握数组操作,轻松应对编程挑战
【Java探索之旅】掌握数组操作,轻松应对编程挑战
11 0
|
10天前
|
存储 Java C语言
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
【Java探索之旅】基本类型与引用类型 数组的应用 二维数组
12 0
|
10天前
|
存储 机器学习/深度学习 Java
【Java探索之旅】数组使用 初探JVM内存布局
【Java探索之旅】数组使用 初探JVM内存布局
25 0
|
10天前
|
存储 Java 编译器
【Java探索之旅】数组概念与初始化指南:动静结合
【Java探索之旅】数组概念与初始化指南:动静结合
21 0