Java基础-查找会员积分问题

本文详细介绍了一个关于会员类和会员操作类的实战案例,包括类的定义、成员变量、构造函数、方法实现,以及如何在主函数中使用这些类进行会员信息的添加、展示和查询。

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

  • 1.问题(类与对象的练习)

 会员类

package demo;
//会员类
public class Vip {

	private String vNo;	//编号
	private int score;	//积分
	
	public Vip(String vNo, int score) {
		this.vNo = vNo;
		this.score = score;
	}

	public Vip() {

	}

	public String getvNo() {
		return vNo;
	}

	public void setvNo(String vNo) {
		this.vNo = vNo;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}
	
}

会员操作类

package demo;

import java.util.Arrays;

//会员操作类
public class VipBiz {

	//新建会员数组
	private Vip[] vips = new Vip[10];
	
	//建立想会员数组中添加会员的方法
	
	public void add(Vip vip) {
		for(int i=0; i<vips.length; i++) {
			if(vips[i] == null) {
				vips[i] = vip;
				break;
				//添加到一个就可以退出循环,再来一遍
			}
		}
	}
	
	//获得所有会员
	/*返回值为对象数组的方法
	 * 不能直接透露原数组信息,为防止外界引用原数组直接对原数组进行操作
	 * 而是新建一个数组,外界直接读取新数组中消息
	 * 新数组与原数组是完全剥离的两个个体,所以外界对新数组操作并不会影响原数组
	 * 用Arrays.copyOf进行复制,但是新数组长度要+1
	 * 遍历原数组,新建vip对象通过构造函数复制原数组遍历出的值
	 * 将原数组中元素从后向前依次放入新数组中
	 * 最后返回新数组
	 */
	public Vip[] getVipAll() {
		Vip[] newVips = new Vip[0];
		for(Vip p : vips) {
			if(p != null) {
				Vip vip = new Vip(p.getvNo(), p.getScore());
				newVips = Arrays.copyOf(newVips, newVips.length + 1);
				newVips[newVips.length-1] = vip;
			}
		}
		return newVips;
	}
	
	//根据编号获得vip
	//返回值是Vip类型变量
	/*遍历对象数组,若不为空且编号=输入编号
	 * 新建Vip类型变量resultVip,将v复制给新变量
	 * 返回新变量resultVip
	 */
	public Vip findByNo(String vNo) {
		for(Vip v : vips) {
			if(v != null && v.getvNo().equals(vNo)) {
				Vip resultVip = new Vip(v.getvNo(), v.getScore());
				return resultVip;
			}
		}
		return null;	//没找到
	}
}






主函数

package demo;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		VipBiz vb = new VipBiz();
		do {
			System.out.print("输入编号:");
			String vNo = input.next();
			System.out.print("输入积分:");
			int score = input.nextInt();
			Vip v = new Vip(vNo, score);
			vb.add(v);
			System.out.print("是否继续:");
		}while("y".equals(input.next()));
		
		System.out.println("*****会员列表*****");
		System.out.println("编号\t积分");
		
		//通过调用方法,遍历输出复制后的新对象数组的值
		//getVipAll()返回值是对象数组
		for(Vip v : vb.getVipAll()) {
			System.out.println(v.getvNo()+"\t" + v.getScore());
		}
		
		System.out.print("输入查找的编号:");
		String findNo = input.next();
		Vip findVip;
		
		//VIP类型的findVip被复制对象数组调用findByNo
		if((findVip = vb.findByNo(findNo)) != null) {
			System.out.println("积分为:" + findVip.getScore());
		}else {
			System.out.println("没找到");
		}
	}

}

主要注意外界调用原数组的问题

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值