录入商品信息案例_总结_1120

本文总结了一个Java实现商品录入的案例,包括商品类的定义、构造方法、get/set方法、键盘录入商品信息、商品信息展示、随机码判断等功能。在实现过程中,强调了在for循环内部创建对象的重要性,以及在比较随机码时正确判断商品是否存在的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

商品录入案例总结_1120

需求与功能

定义一个商品的类 当中有 : 商品名字 , 商品价格 ,商品随机码(类似第三题的随机码)等属性;

  • a:生成对应的 构造方法 , get set方法.toString()方法.
  • b:生成五个商品对象,保存起来. 数据要 键盘 录入
  • c:将所有商品的信息 展示出来.
  • d:键盘录入商品随随机码 ,判断该随机码是否存在

分析

a:生成对应的 构造方法 , get set方法.toString()方法.

通过快捷键能够快速地点出来。

b:生成五个商品对象,保存起来. 数据要 键盘 录入

创建一个方法,参数列表为对象数组。键盘录入用Scanner,通过循环实例化对象,再通过调用set方法给对象赋值,最后将对象保存到数组中。

c:将所有商品的信息 展示出来.

创建一个方法,参数列表为对象数组。通过for循环遍历传入数组的数据,用toString()方法将数据打印。

d:键盘录入商品随随机码 ,判断该随机码是否存在

创建一个方法,参数列表为对象数组。键盘录入用Scanner,通过调用netx()再调用equals()方法判断是否与传入的数组对象中的元素的随机码相同。

代码实现

商品类的定义
class Goods{
    private String name;        //商品名字
    private double price;       //商品价格
    private String randNum;     //商品随机码
    public Goods() {            //空参构造
        super();    
    }
    public Goods(String name, double price, String randNum) {//有参构造
        super();
        this.name = name;
        this.price = price;
        this.randNum = randNum;
    }
                            //get/set方法
    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 String getRandNum() {
        return randNum;
    }
    public void setRandNum(String randNum) {
        this.randNum = randNum;
    }
    //重写toString()方法
    public String toString() {
        return "Goods [商品名字=" + name + "\t价格=" + price + "元\t随机码="+ randNum + "]";
    }
}

创建一个商品类Goods,定义商品名称,商品价格,商品随机码。有参和无参构造方法,set和get方法,最后重写toString()方法。这些方法都是可以通过快捷键写出来的。

第一个功能方法的实现:
//b:生成五个商品对象,保存起来. 数据要 键盘 录入
public static void enterGoods(Goods[] arr){
    String randNum = "";                            //定义一个字符串变量,存放随机码
    for(int i = 0; i < arr.length; i++){
        Goods g = new Goods();                      //创建对象
        System.out.println("请录入商品的名字:");
        String name = new Scanner(System.in).next();
        g.setName(name);                            //录入商品名字,通过setName()方法给商品名字赋值
        System.out.println("请录入商品的价格:");
        double  price = new Scanner(System.in).nextDouble();
        g.setPrice(price);                          //录入商品价格,通过setName()方法给价格名字赋值
        randNum = randNum();                        //调用随机码方法,获取随机码
        g.setRandNum(randNum);                      //通过setRandNum()方法给商品随机码赋值
        arr[i] = g;                                 //把信息录入完成的对象存储到对象数组
        System.out.print("商品录入成功!");
        System.out.println("该商品的随机码为:"+randNum);
    }
}

需要注意的是,在for循环内部要创建对象。通过创建的对象去调用set()方法,把用户输入的数据赋值给该对象。再把这个对象存储到对象数组中。如果没有创建对象,而是直接用arr[i]直接调用set()方法赋值的话,会报错,显示空指针异常。

第二个功能方法的实现:
//c:将所有商品的信息 展示出来.
public static void goodsInfoShow(Goods[] arr){
    System.out.println("商品信息:");
    for(int i = 0; i < arr.length; i++){
        System.out.println(arr[i].toString());          //调用toString()方法,打印商品信息
    }
}

利用for循环遍历每一个对象数组的元素,再通过调用toString()方法打印商品信息。

第三个功能方法的实现:
//d:键盘录入商品随随机码 ,判断该随机码是否存在
public static void isRandNumIn(Goods[] arr){
    System.out.println("请输入一个四位数的随机码:");
    Scanner sc = new Scanner(System.in);                            
    String str = sc.next();                                         //获取用户输入的随机码
    for(int i = 1; i <= arr.length; i++){                           //遍历商品数组
        if (str.equals(arr[i-1].getRandNum())){                     //调用equals()方法,与商品数组进行比较
            System.out.println("该随机码存在!");
            System.out.println(arr[i-1].toString());                //如果该随机码存在,就打印与之对应的商品信息
            break;
        }else if(i == arr.length){
            System.out.println("该随机码不存在!");
        }
    }
}

在这里我把for循环的:起始位置定义为1,是因为这样容易判断随机码不存在的情况,即:当i == arr.lenthg时,证明对象数组中,没有与之对象的元素。

获取随机码
//获取随机码的方法
public static String randNum() {
    String str = "";
    for(int i = 0; i < 4; i++){     //随机四个数字,和字符串拼接,使其转换成字符串
        str = new Random().nextInt(10)+str;
    }
    return str;
}

这里我把获取随机码打包成一个方法,方便调用。

主方法
public class GoodsInfo {
public static void main(String[] args) {
    Goods[] g = new Goods[4];               //创建一个长度为5的Goods对象数组
    enterGoods(g);                          //调用enterGoods()方法,录入商品信息
    goodsInfoShow(g);                       //调用goodsInfoShow()方法,打印商品信息
    isRandNumIn(g);                         //调用isRandNumIN()方法,判断随机码是否存在
}

在主方法创建一个对象数组,长度为5。调用各方法。
这里写图片描述
这里写图片描述
这里写图片描述

总结

Scanner和Random的用法,我经常采用匿名的方式写。不过也有一些是必须要定义一个变量去存储的。
在第一个功能方法的实现里,我定义了一个String变量,存储调用randNum()方法后的返回值。

如果没有定义一个randNum变量存储调用randNum()的返回值,而是直接在setRandNum()传入setRandNum(randNum());又用一个输入语句System.out.println(“该商品的随机码为:”+randNum());那么这样可能会导致同个商品的随机码出现不同。因为同个商品调用了两次randNum()方法。

在实现第一个功能的时候,我没有在实现方法里创建数组对象,结果一直报空指针异常。后来才发现,在for循环内部要创建对象。通过创建的对象去调用set()方法,把用户输入的数据赋值给该对象。再把这个对象存储到对象数组中。如果没有创建对象,而是直接用arr[i]直接调用set()方法赋值的话,就会报错。

在实现第三个功能时,要判断用户输入的随机码是否存在?一开始我用的是把用户输入的数据调用equals()方法,和数组对象进行遍历,如果相同就输入“存在”,如果和最后一个比较还是不相同,那么就输入“不存在”。我用if(){}else if(用户的数据和数组最后一个数据比较){“不存在”};
但是这样是错的。后来才改用:在for里把起始位置设置为1。当for循环最后仍没有break跳出,就证明该数据不存在。

做这个项目的时间花的太长,还是不够熟悉面线对象。看到项目,心里没有计划好框架,功能都是一个个写出来的,最后才拼接上。有很多细节也是一开始没有想到的。这应该是不熟手的原因。不过相比于之前,也算是有进步了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值