Java数组的2个小案例(杨辉三角分析和商品管理增删改查)

简介: Java数组的2个小案例(杨辉三角分析和商品管理增删改查)

1 Java数组实现杨辉三角Pascal’s Triangle

输出如下杨辉三角

  /**
   *      {1}
   *     {1,1}
   *    {1,2,1}
   *   {1,3,3,1}
   *  {1,4,6,4,1} 
   */
public class PascalTriangle {
  /**
   * yhArr[0][0]
   * yhArr[1][0]
   * 
   * yhArr[1][1]
   * yhArr[2][2]
   * 
   * 
   * yhArr[2][1] = yhArr[1][0] + yhArr[1][1]
   * yhArr[3][1] = yhArr[2][0] + yhArr[2][1]  
   * yhArr[4][2] = yhArr[3][1] + yhArr[3][2]  
   * 
   * yhArr[i][j] = yhArr[i-1][j-1] + yhArr[i-1][j];
   * 
   *      {1}
   *     {1,1}
   *    {1,2,1}
   *   {1,3,3,1}
   *  {1,4,6,4,1} 
   * 
   * 
   * 
   * {{0},{0,0},{0,0,0},{0,0,0,0},{0,0,0,0,0}}
   * {{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}}
   */
  public static void main(String[] args) {
    
    int[][] yhArr = new int[5][];
    
    //二维数组遍历
    for (int i = 0; i < yhArr.length; i++) {
      //yhArr[i] 表示每一个一维数组,暂未初始化
      yhArr[i] = new int[i+1];
      //遍历一维数组进行赋值
      for (int j = 0; j < yhArr[i].length; j++) {
        
        if(j == 0 || i == j) {
          yhArr[i][j] = 1;
        }else {
          yhArr[i][j] = yhArr[i-1][j-1] + yhArr[i-1][j];
        }
      }
    }
    for (int i = 0; i < yhArr.length; i++) {
      for (int j = 0; j < yhArr.length - i; j++) {
        System.out.print("  ");
      }
      for (int j = 0; j < yhArr[i].length; j++) {
        System.out.print(yhArr[i][j]+"    ");
      }
      System.out.println();
    }
  }
}

2 简易的商品管理系统

  1. 打印启动页面(欢迎使用XXXXX商品管理系统)
  2. 选择界面(1、增加 2、修改 3、删除 4、查看 5、排序 6、退出)
  3. 提供控制台输入(循环)
  4. 进行增删改查(数组)
  1. 增加
  • 考虑是否需要扩容
  • 添加商品 (要保证商品名称唯一)
  • 有效个数+1
  1. 删除
  • 判断要删除的商品是否存在
  • 考虑特殊情况:当数组的元素有效个数与数组的长度相等(扩容)
  • 删除元素
  • 数组的有效个数-1
  1. 修改
  • 判断要修改是否存在
  • 修改
  1. 遍历
  • 判断是否有商品
  • 遍历输出商品
  1. 查询
  • 判断商品是否存在
  • 返回商品所在下标,下标为-1则表示不存在
public class ProductManager {
  
  public static void main(String[] args) {
    start();
  }
    menu();
  }
  public static void menu() {
    System.out.println();
    System.out.println();
    System.out.println();
    System.out.println("===============欢迎使用XXXXX商品管理系统====================");
    Scanner sc = new Scanner(System.in);
    while(true) {
      System.out.println("1、增加 2、修改 3、删除 4、查看 5、排序 6、退出 ");
      int option = sc.nextInt();
      switch (option) {
      case 1:
        System.out.println("请输入要增加的商品");
        String productName = sc.next();
        add(productName);
        break;
      case 2:
        
        break;
      case 3:
        
        break;
      case 4:
        queryAll();
        break;
      case 5:
        
        break;
      case 6:
        System.out.println("欢迎下次使用!!!!");
        return;
      default:
        System.out.println("输入有误,请重新输入");
        break;
      }
    }
  }
  /**
   * 商品的名称进行增删改查(数组)
   */
  
  //表示商品名称数组
  static String[] names = {};   
  //表示数组中元素的有效个数
  static int size = 0;
  
  
  
  /**
   * 增加商品
   * @param productName   商品名称
   */
  public static void add(String productName) {
    //1、考虑是否需要扩容
    if(size == names.length) {
      names = Arrays.copyOf(names, names.length+5);
    }
    //2、添加商品  (要保证商品名称唯一)
    names[size] = productName;
    
    //3、有效个数+1
    size++;
  }

  /**
   * 修改商品
   * @param oldName   原名称
   * @param newName   新名称
   */
  public static void update(String oldName,String newName) {
    //1、判断要修改是否存在
    int index1 = isExsist(oldName);
    int index2 = isExsist(newName);
    
    if(index1 == -1 ) {
      System.out.println("商品不存在无法修改");
      return;
    }
    if(index2 != -1) {
      System.out.println("修改的商品已存在无法修改");
      return;
    }
    
    //2、修改商品
    names[index1] = newName;
    
  }
  
  /**
   * 删除商品
   * @param productName  删除商品的名称
   */
  public static void delete(String productName) {
    //1、判断要删除的商品是否存在
    int index = isExsist(productName);
    if(index == -1) {
      System.out.println("商品不存在,无法删除");
      return;
    }
    //2、考虑特殊情况:当数组的元素有效个数与数组的长度相等(扩容)
    if(size == names.length) {
      names = Arrays.copyOf(names, names.length+5);
    }
    //3、删除元素
    for (int i = index; i <= size; i++) {
      names[i] = names[i+1];
    }
    //4、数组的有效个数-1
    size--;
    
  }

  public static void queryAll() {
    //1、判断是否有商品
    if(size == 0) {
      System.out.println("暂无商品,请添加!");
      return;
    }
    System.out.println("商品如下:");
    
    //2、遍历输出商品
    for (int i = 0; i < size; i++) {
      if(i%5==0 && i != 0) {
        System.out.println();
      }
      System.out.print(names[i]+"\t");
    }
    System.out.println();
  }
  
  /**
   * 判断商品是否存在
   * @param productName 商品名称
   * @return   返回商品所在下标,下标为-1则表示不存在
   */
  public static int isExsist(String productName) {
    for (int i = 0; i < names.length; i++) {
      if(productName.equals(names[i])) {
        return i;
      }
    }
    return -1;
  }
}
目录
相关文章
|
10天前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
28 15
|
6天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
9天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
【10月更文挑战第8天】本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
21 5
|
12天前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
14 3
|
12天前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
19 1
|
6天前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
24 0
|
12天前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
9 0
|
5月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
101 1
|
2月前
|
Java 索引
Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
这篇文章介绍了Java中数组复制的四种方法:`Arrays.copyOf()`、`Arrays.copyOfRange()`、`System.arraycopy()`和`clone()`方法,以及它们的使用场景和示例代码。
|
3月前
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法