JAVA--数组练习

1.test01

定义一个数组,存储三个商品对象,并将商品对象存储到一个数组中。
(1)先定义一个Goods类

package test;

public class Goods {
  private String id;
  private String name;
  private double price;
  private int count;//库存
  
  //构造一个标准的javabean
  //1.无参构造方法
  public Goods() {
	  
  }
  //2.构造带参方法
  public Goods(String id,String name,double price,int count) {
	  this.id = id;
	  this.name = name;
	  this.price = price;
	  this.count = count;
	  
  }
  //3.构造相应的get和set方法 get用于返回所需值,所以需要有返回类型;
  //set用于设置所需值,需要形参传值,不需要返回值
  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;
  }
}

(2)再定义一个Goods测试类

package test;

public class GoodsTest {
  public static void main(String args[]) {
	  //创建一个数组,Goods为创建的数据类型
	  Goods arr[] = new Goods[3];
	  //创建对象
	  Goods g1 = new Goods("001","华为P40",5999.0,100);
	  Goods g2 = new Goods("002","杯子",4999.2,100);
	  Goods g3 = new Goods("003","枸杞",99.9,100);
	  //将商品添加到数组中
	  arr[0] = g1;
	  arr[1] = g2;
	  arr[2] = g3;
	  //遍历
	  for(int i=0;i<arr.length;i++) {
		  Goods good = arr[i];
		  System.out.println(good.getId()+','+good.getName()+','+good.getPrice());
	  }
	  
  }
}

运行效果

001,华为P40,5999.0
002,杯子,4999.2
003,枸杞,99.9

2.test02

定义一个数组存储3部汽车对象,属性:品牌、价格、颜色。数据通过键盘录入而来,并把数据存储到数组中
(1)关于键盘录入

package test;
import java.util.*;

public class GoodsTest {
  public static void main(String args[]) {
	  //键盘录入
	  //nextInt() 接受整数;nextDouble() 接收小数;next() 接受字符串
	  //遇到空格等会停止接收
	  /*
	  Scanner sc = new Scanner(System.in);
	  System.out.println("输入一个整数");
	  int m = sc.nextInt();
	  System.out.println(m);
	  */
	  
	  
	  //nextLine();接受字符串,与上述方法不能混用!!
	  //先使用上面的方法会导致nextLine()接收不到数据
	  Scanner sc = new Scanner(System.in);
	  System.out.println("输入一个字符串");
	  String str = sc.nextLine();
	  System.out.println(str);
	  
  }
}

(2)建一个汽车类

package test;

public class Car {

	private String brand;
	private double price;
	private String color;
	
	public Car() {
		
	}
	
	public Car(String brand,int price,String color) {
		this.brand = brand;
		this.price = price;
		this.color = color;
	}
	public String getBrand() {
		return brand;
	}
	public void setBrand(String brand) {
		this.brand=brand;
	}
	
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price=price;
	}
	
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color=color;
	}
	
}

(3)CarTest

package test;
import java.util.*;

public class CarTest {
  public static void main(String args[]) {
	  
	  //动态创建一个数组
	  Car arr[] = new Car[3];
	  //创建对象,由键盘录入
	  Scanner sc = new Scanner(System.in);
	  //写一个for循环,用于依次输入car的3个属性
	  for(int i=0;i<arr.length;i++) {
		  //未知值,用空参创造对象
		  Car c = new Car();
		  //录入品牌
		  System.out.println("请输入汽车品牌:");
		  String brand = sc.next();
		  c.setBrand(brand);
		//录入价格
		  System.out.println("请输入汽车价格:");
		  double price = sc.nextDouble();
		  c.setPrice(price);
		//录入颜色
		  System.out.println("请输入汽车颜色:");
		  String color = sc.next();
		  c.setColor(color);
		//放入数组
		  arr[i]=c;
		  
	  }
	  for(int i=0;i<arr.length;i++) {
		  Car c = arr[i];
		  System.out.println(c.getBrand()+","+c.getColor()+","+c.getPrice());
	  }
  }
}

3.test03

定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁

(1)student类

package s_1003;

public class Student {
  private int id;
  private String name;
  private int age;
  
  //标准的javabean
  public Student() {
	  
  }
  public Student(int id,String name,int age) {
	  this.id = id;
	  this.name = name;
	  this.age = age;  
  }
  
  public int getId() {
	  return id;
  }
  public void setId(int id) {
	  this.id = id;
  }
  
  public String getName() {
	  return name;
  }
  public void setName(String name) {
	  this.name = name;
  }
  
  public int getAge() {
	  return age;
  }
  public void setAge(int age) {
	  this.age = age;
  }
  
  
}

(2)test类

package s_1003;
import java.util.*;

public class test01 {
 /*
  * 定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
学生的属性:学号,姓名,年龄。
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息
如果存在,则删除,如果不存在,则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息
要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
  */
	
  public static void main(String args[]) {
	
	  //1.创建数组
	  Student arr[] = new Student[3];
	  //2.创建学生对象
	  Student s1 = new Student(01,"zs",15);
	  Student s2 = new Student(02,"zs",16);
	  Student s3 = new Student(03,"zs",17);
	  //将对象存储到数组中
	  arr[0] = s1;
	  arr[1] = s2;
	  arr[2] = s3;
	  
	  //创建一个新对象
	  Student s4 = new Student(04,"wk",18);
	  
	  //判断是否唯一
	  boolean flag = isContains(arr,s4.getId());
	  if(flag) {
		  //如果存在则不需要添加
		  System.out.println("id重复,无需添加");
	  }else {
		  /*添加数组时,需判断数组是否已满
		   * 未满直接添加
		   * 已满需重新创建新数组,并将旧数组按顺序复制过来
		   */
		  int count = Arr_full(arr);
		  if(count==arr.length) {
			  //重新创建数组并复制
			  Student newarr[] = Craete_arr(arr);
			  //插入新数组
			  newarr[count] = s4;
			  //遍历
			  //Print_arr(newarr);
			//要求3:通过id删除学生信息
			  //键盘录入需要删除的id
			  Scanner sc = new Scanner(System.in);
			  System.out.println("请输入你要删除的id:");
			  int dete_id = sc.nextInt();	  
			  //查找id位置
			  int index = getIndex(newarr,dete_id);
			  if(index==-1) {
				  System.out.println("id不存在");
			  }else {
				  newarr[index] = null;
			  }
			  
			  Print_arr(newarr);
			  
		  }else {
			  //由于数组是按顺序添加的,所以未满时直接放到count位置上即可
			  arr[count]=s4;
			  //遍历
			  //Print_arr(arr);
			  Scanner sc = new Scanner(System.in);
			  System.out.println("请输入你要删除的id:");
			  int dete_id = sc.nextInt();	  
			  //查找id位置
			  int index = getIndex(arr,dete_id);
			  if(index==-1) {
				  System.out.println("id不存在");
			  }else {
				  arr[index] = null;
			  }
			  
			  Print_arr(arr);
		  }
		  
		
	  }
	  
	  
  }
  
  //根据数组和id判断唯一
  public static boolean isContains(Student arr[],int id) {
	  //循环遍历数组
	  for(int i=0;i<arr.length;i++) {
		  Student s0 = new Student();
		  int s0_id = s0.getId();
		  //要考虑到数组为空的情况,非空情况下进行值的判断,为空则直接进行下次循环
		  if(arr[i]!=null) {
			  if(s0_id == id) {
				  return true;
			  }
		  }
	  }
	  return false;
  }
  
  //根据数组判断存储空间
  public static int Arr_full(Student arr[]) {
	  int count = 0;
	  for(int i=0;i<arr.length;i++) {
		  if(arr[i]!=null) {
			  count++;
		  }
	  }
	  return count;
  }
  
  //根据数组重新创建新数组,并复制旧数组
  public static Student[] Craete_arr(Student arr[]) {
	 //新数组的长度==旧数组+1
	  Student newarr[] = new Student[arr.length+1];
	  for(int i=0;i<arr.length;i++) {
		  newarr[i] = arr[i];
	  }
	  return newarr;
  }
  
  //根据新或旧数组遍历
  public static void Print_arr(Student arr[]) {
	  for(int i=0;i<arr.length;i++) {
		  Student s0=arr[i];
		  if(s0!=null) {
		    System.out.println(s0.getId()+","+s0.getName()+","+s0.getAge());
		  }
	  }  
  }
  
  //根据新或旧数组和id查找id所在位置,使用标志-1来表示未找到
  public static int getIndex(Student arr[],int id) {
	  for(int i=0;i<arr.length;i++) {
		  if(arr[i]!=null) {
			  Student s0=arr[i];
			  int d_id =s0.getId();
			  if(d_id==id) {
				  return i;
			  }
		  }
	   }
	  return -1;
  }
}

仅供个人学习用,以上学习资源均来自https://www.bilibili.com/video/BV17F411T7Ao?p=95&vd_source=91fcbb937f3e01251f81ce1e559ce73e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值