tips:
1.往对象数组添加元素时自动扩容思路:
1)定义对象数组并由初始长度、定义下标初始值为0
2)添加元素方法,参数传入要添加的元素
(1)获取对象数组现有长度
(2)比较此次要添加元素下标与现有数组长度,当下标>=现有数组长度时,开始扩容。
新长度=原长度*2
数组=复制原有数组,长度变为新长度
(3)按下标添加元素
(4)下标元素+1
2.冒泡排序思路
(1)双层循环,外层循环确定比较的轮次length-1轮,第二层循环确定当前循环的比较次数(每次都从头开始相邻两两比较,但比较结束受外层循环控制[0,length-i-1])
3.equals()方法比较两个String时,确定的值放在前面,避免null调用方法抛出异常。
import java.util.Arrays;
public class Test4 {
/*
实现一个化妆品商城的化妆品管理
1.定义一个化妆品类(Cosmetic)
2.定义一个化妆品管理类(CosmeticManger)
(1)实现添加商品功能
(2)可以输出所有化妆品信息功能
3.使用继承实现一个可按单价排序输出所有化妆品的功能
4.使用继承实现一个只输出进口化妆品的功能
* */
public static void main(String[] args) {
ImportCosmeticManager cm = new ImportCosmeticManager();
cm.add(new Cosmetic("AA","进口",1000));
cm.add(new Cosmetic("bb","进口",2000));
cm.add(new Cosmetic("cc","国产",10));
cm.add(new Cosmetic("dd","国产",8));
cm.printInfo();
}
}
//化妆品管理类
class CosmeticManager{
protected Cosmetic[] cs = new Cosmetic[4];//protected可在继承中使用
protected int count=0;//下标
//进货功能
public void add(Cosmetic c){
int size = cs.length;
if (count>=size){
int newLen = size*2;
cs= Arrays.copyOf(cs,newLen);
}
cs[count]=c;
count++;
}
//输出所有产品
public void printInfo(){
for (int i = 0; i < count; i++) {
System.out.println(cs[i].getInfo());
}
}
}
//可按单价排序的类
class SortCosmeticManager extends CosmeticManager{
@Override
//排序输出
public void printInfo() {
Cosmetic[] temp = Arrays.copyOf(super.cs,super.count);
Cosmetic c = null;
//冒泡法排序
for (int i = 0; i < temp.length-1; i++) {
for (int j = 0; j < temp.length-i-1; j++) {
if (temp[j].getPrice()>temp[j+1].getPrice()){
c=temp[j];
temp[j]=temp[j+1];
temp[j+1]=c;
}
}
}
for (Cosmetic cosmetic:temp) {
System.out.println(cosmetic.getInfo());
}
}
}
//输出进口化妆品的管理类
class ImportCosmeticManager extends CosmeticManager{
@Override
public void printInfo() {
for (int i = 0; i < count; i++) {
if ("进口".equals(cs[i].getType())){//使用equals方法时,确定的项放在前面,避免null异常
System.out.println(cs[i].getInfo());
}
}
}
}
//化妆品类
class Cosmetic{
private String name;//品牌
private String type;//进口或国产
private int price;//单价
public Cosmetic() {
}
public Cosmetic(String name, String type, int price) {
this.name = name;
this.type = type;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getInfo(){
return "name="+name+",type="+type+",price="+price;
}
}
本文介绍了Java中的方法重写规则,包括方法名、返回值类型、参数列表的一致性以及访问权限和异常处理。同时,讲解了对象数组在添加元素时的自动扩容机制,涉及初始化、扩容逻辑以及元素的插入。此外,还详细阐述了冒泡排序的实现步骤,包括双层循环的使用和比较策略。

414

被折叠的 条评论
为什么被折叠?



