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;
  }
}
目录
相关文章
|
26天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
60 3
|
28天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
52 2
|
29天前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
20 2
|
2月前
|
存储 缓存 算法
Java 数组
【10月更文挑战第19天】Java 数组是一种非常实用的数据结构,它为我们提供了一种简单而有效的方式来存储和管理数据。通过合理地使用数组,我们能够提高程序的运行效率和代码的可读性。更加深入地了解和掌握 Java 数组的特性和应用,为我们的编程之旅增添更多的精彩。
33 4
|
2月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
19 1
|
2月前
|
存储 缓存 算法
提高 Java 数组性能的方法
【10月更文挑战第19天】深入探讨了提高 Java 数组性能的多种方法。通过合理运用这些策略,我们可以在处理数组时获得更好的性能表现,提升程序的运行效率。
31 2
|
2月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
7月前
|
前端开发 Java
java前端:删除数组中指定元素的方法
java前端:删除数组中指定元素的方法
112 1
|
4月前
|
Java 索引
Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
这篇文章介绍了Java中数组复制的四种方法:`Arrays.copyOf()`、`Arrays.copyOfRange()`、`System.arraycopy()`和`clone()`方法,以及它们的使用场景和示例代码。
|
5月前
|
存储 Java 容器
Java数组的初始化方法
Java数组的初始化方法