API以及添加学生信息练习

news2024/11/24 5:01:54

API:应用程序编程接口

简单理解:API就是别人已经写好的东西,我们不需要自己编写,直接使用即可

Java API:指的就是jdk中提供的各种功能的Java类,这些类将底层的实现封装起来,我们不需关心这些类是如何实现的,只需要学习这些类如何使用就好

我们之前学习的API

Scanner 键盘录入

Random 随机数

jdk API帮助文档获取(需要的可以留言找我要

不是人工翻译,看懂意思就好

最重要的包java.long

1.打开API帮助文档

2.点击显示,并找到索引下面的输入

3.在输入框中输入类名并点击显示

4.查看类所在的包

5.查看类的描述

添加学生信息练习

Student.java

package text5;

public class Student {
    private int id;
    private String name;
    private int age;

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Text.java

package text5;

public class Text {
    public static void main(String[] args) {
        //创建一个数组用来存学生信息
        Student[] arr = new Student[3];
        //创建学生对象并添加到数组里面
        Student stu1 = new Student(1,"zhangsan",23);
        Student stu2 = new Student(2,"lisi",24);
        Student stu3 = new Student(3,"wangwu",25);
        //把学生对象添加到数组里面
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;


        //要求1,再次添加一个学生对象,并在添加的时候进行学号的唯一性判断
        //读题解析法
        Student stu4 = new Student(4,"zhaoliu",26);
        //唯一性判断(目的,id不重复)
        //1.已存在不添加
        //2.不存在---就可以把学生添加进来
        boolean flag = contains(arr,stu4.getId());
        if (flag){//boolean在判断的时候,直接把条件写在括号中就可以了
           //存在---不用添加
            System.out.println("当前id重复,请修改id后重试");
        }else {
            //不存在---就可以把学生添加进数组
            int count = getCount(arr);
            if (count == arr.length){
                //已存满
                //创建一个新的数组,长度 = 老数组长度+1
                //最后把老数组拷贝到新数组里面
                Student[] newArr = creatNewArr(arr);
                //[stu1,stu2,stu3]
                //改变为【stu1,stu2,stu3,null】
                newArr[count] = stu4;
                //要求2:添加完毕后,遍历所有学生的信息
                printArr(newArr);
            }else {
                //未存满
                //【stu1,stu2,null】
                //getCount获取到的是2,表示数组中已经有了两个元素
                //但同时这个2也可以表示下一次添加数据,就是添加在2这个索引的位置
                arr[count] = stu4;
                //要求2:添加完毕后,遍历所有学生的信息
                printArr(arr);
            }

        }
        //要求3:通过学生id,删除学生信息,如果存在则删除,如果不存在,则显示删除失败
        int index = getIndex(arr,2);
        //要找到id在数组中对应的索引
        if (index >= 0){
            //存在,则删除
            arr[index] = null;
            //遍历数组
            printArr(arr);
        }else{
            //不存在
            System.out.println("当前id不存在,删除失败");
        }
        System.out.println(index);
    }

    //1.我要干嘛 找到id在数组中的索引
    //2.我需要什么才能完成 数组id
    //3.调用处是否需要继续使用方法的结果 ? 要
    public  static int getIndex(Student [ ] arr , int id){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if (stu != null){
                int sid = stu.getId();
                if(sid == id){
                    return 1;
                }
            }
        }
        //当循环结束如果还没有找到,就返回-1 因为没有-1 索引
        return -1;
    }
    
    
    
    public  static void printArr(Student[] arr){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            if(stu != null){
                System.out.println(stu.getId()+","+stu.getName()+","+stu.getAge());
            }
        }
    }

    //创建一个新的数组,长度 = 老数组长度+1
    //最后把老数组拷贝到新数组里面
    public  static Student[] creatNewArr(Student[] arr){
        Student[] newArr = new Student[arr.length + 1];
        //循环遍历,得到老数组当中的所有元素
        for (int i = 0; i < arr.length; i++) {
            //把老数组中的元素添加到新数组中
            newArr[i] = arr[i];
        }
        //返回新数组
        return newArr;
    }



    //定义一个方法判断数组中以及村里几个元素
    public static int getCount(Student[] arr){
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            //定义一个计数器用来统计
            if (arr[i] != null){
                count++;
            }
        }
        return count;
    }

    //1.我要干嘛   唯一性判断
    //2.我干这件事,需要什么才能完成  数组 id
    //3.调用处是否需要继续舒勇方法的结果  必须返回已存在 不存在
    public  static  boolean contains(Student[] arr ,int id){
        for (int i = 0; i < arr.length; i++) {
            Student stu = arr[i];
            //进行非空判断,如果获取到了空值getId就会报错
            if (stu != null){
                int sid = stu.getId();
                if (sid == id){
                    return true;
                }
            }
        }
        return false;
        //需要等所有的循环都结束之后,才能判断是否有一样的
    }
}

在写代码之前需要明确题目要求,一步一步来,清楚自己想要干什么,要怎么干,为什么这么干,循序渐进!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是神中神公司?发表内卷言论,分分钟要你道歉...

谷歌 海的那边&#xff0c;这几天最乐的新闻&#xff0c;是谷歌前 CEO 批评员工不拼命工作后道歉。 今年 4 月&#xff0c;谷歌前 CEO 埃里克施密特&#xff08;Eric Schmidt&#xff09;在斯坦福大学的一次演讲中&#xff0c;被问及 OpenAI 和 Anthropic 等初创公司目前在人工…

【全面解析】芯片采购渠道策略:原厂直采VS代理VS现货市场

芯片作为现代科技的基石&#xff0c;其重要性不言而喻。无论是智能手机、汽车电子、物联网设备还是高性能计算领域&#xff0c;都离不开芯片的支持。随着5G、AI、大数据等前沿技术的飞速发展&#xff0c;对芯片的需求量持续攀升&#xff0c;如何确保稳定、高效的芯片供应链成为…

A3VLM: Actionable Articulation-Aware Vision Language Model

发表时间&#xff1a;13 Jun 2024 作者单位&#xff1a;SJTU Motivation&#xff1a;以往的机器人VLM如RT-1[4]、RT-2[3]和ManipLLM[21]都专注于直接学习以机器人为中心的动作。这种方法需要收集大量的机器人交互数据&#xff0c;这在现实世界中非常昂贵。 解决方法&#xf…

数据中台之数据开发-离线开发和实时开发

目录 一、离线开发 1.1 概述 1.2 作业调度 1.3 基线控制 1.4 异构存储 1.5 代码校验 1.6 多环境级联 1.7 推荐依赖 1.8 数据权限 二、实时开发 2.1 概述 2.2 实时计算的特点 2.2.1 实时且无界(unbounded)的数据流 2.2.2 持续且高效的计算 2.2.3 流式且实时的数据…

go,gin封装gorm使用,增删改查

1、主 package mainimport ("fmt""wbGo/configs" )type Dades struct {Id intName stringAge int }func main() {//连接数据库configs.BaseName("wbrj_sample")var data []Dades//查询configs.Db.Raw("select * from dade where id>…

机器学习/深度学习——关于分类任务的机器学习、深度学习模型的评估指标详解

机器学习/深度学习——模型的评估详解 搭配以下文章进行学习&#xff1a; 卷积神经网络&#xff1a; 深度学习——卷积神经网络&#xff08;convolutional neural network&#xff09;CNN详解&#xff08;一&#xff09;——概述. 步骤清晰0基础可看 深度学习——卷积神经网…

Ciallo~(∠・ω・ )⌒☆第十七篇 Ubuntu基础使用 其一

Ubuntu是一种基于Linux的操作系统&#xff0c;它是开源的、免费的&#xff0c;并且具有广泛的用户群体。 基本文件操作&#xff1a;Ubuntu使用命令行工具来进行文件操作。以下是一些常用的命令&#xff1a; 切换到用户主目录&#xff1a; cd ~ 切换到上级目录&#xff1a; cd .…

QT 数据导出到Excel

原创&#xff1a;QT 数据导出到Excel 在Qt自带的axcontainer模块中&#xff0c;我们可以使用QAxObject类来将数据保存到Excel中。Qt中将数据保存到Excel通常有两种方式&#xff1a;一种是以Excel格式导出&#xff0c;需要电脑上安装Office软件&#xff1b;另一种是以CSV格式导出…

用户端是小程序,后台管理系统是PC端的CMS系统

1. 数据库表设计 1.1 课程轮播图表 CREATE TABLE course_banners (id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 轮播图主键,image_url varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 轮播图图片链接,title varchar(255) CHARAC…

高考志愿智能推荐系统-计算机毕设Java|springboot实战项目

&#x1f34a;作者&#xff1a;计算机毕设残哥 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目、 源…

Lesson 64 Don‘t ... You mustn‘t ...

Lesson 64 Don’t … You mustn’t … 词汇 play n. 戏剧&#xff08;真人演的&#xff0c;话剧&#xff09;v. 玩耍 搭配&#xff1a;play with 物体 / 人    玩…… / 和……一起玩 例句&#xff1a;我正在和Leo玩。    I am playing with Leo.演奏&#xff08;乐器…

代码随想录算法训练营第十六天

力扣题部分: 513.找树左下角的值 题目链接:. - 力扣&#xff08;LeetCode&#xff09; 题面: 给定一个二叉树的 根节点 root&#xff0c;请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 思路(层序遍历): 应该是这道题最简单的方法了&#xff0…

数据结构与算法——DFS(深度优先搜索)

算法介绍&#xff1a; 深度优先搜索&#xff08;Depth-First Search&#xff0c;简称DFS&#xff09;是一种用于遍历或搜索树或图的算法。这种算法会尽可能深地搜索图的分支&#xff0c;直到找到目标节点或达到叶节点&#xff08;没有子节点的节点&#xff09;&#xff0c;然后…

Vue3 reactive 响应式原理源码实现

学习小满的视频&#xff0c;更详细的讲解 Vue3响应式原理 视频 需要了解Proxy、Reflect函数 目录结构&#xff1a; 配置环境&#xff1a; package.json {"name": "vue-reactive","version": "1.0.0","description": &quo…

【Kubernetes】Service 类型

Service 类型 1.NodePort2.ClusterlP3.LoadBalance4.ExternalName 在《Service 概念与实战》一文中&#xff0c;Service 的发布使用的是 NodePort 类型。除此之外&#xff0c;Service 的发布还支持 ClusterlP、LoadBalancer 和 ExternalName 这 3 种类型。 1.NodePort 在把 Se…

基于STM32开发的智能门铃系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化按钮与蜂鸣器控制显示与远程通知Wi-Fi通信应用场景 家庭智能门铃办公室访客通知常见问题及解决方案 常见问题解决方案结论 1. 引言 智能门铃系统通过集成按钮、蜂鸣器、显示屏、W…

HTML补充——表格表单

一、表格 1、在现实生活中&#xff0c;我们经常需要使用表格来表示一些格式化数据&#xff1a;课程表、人名表、成绩单 同样在网页中我们也需要使用表格&#xff0c;我们通过table标签创建表格。 2、在table标签中使用tr表示表格中的一行&#xff0c;有几个tr就有几行&#xff…

prometheus数据如何清理

1. 停止prometheus服务 2. 进到prometheus数据目录 3. 删除数据 3.1 删除持久化的数据块 Prometheus 将数据分块存储&#xff0c;每个块对应一个时间段。你可以通过查看目录中的时间戳来找到需要删除的数据块。 每个块的目录名是一个时间戳范围&#xff0c;例如 16094592000…

单片机在线升级架构(bootloader+app)

1、架构&#xff08;bootloaderapp) 在一定的时间内如果没有程序需要更新则自动跳转到app地址执行用户程序 内部flash 512K bootloader 跑裸机 48k 主要实现USB升级和eeprom标志位升级 app 跑freeRtos 464K 程序的基本功能&#xff0c;升级时软件复位开始执行bootloader升级…

互斥锁以及进程间通信

写线程 ---写资源 可以写数据 的条件 1.开始时 &#xff0c;buf空的 2.读线程 读完了 读线程 //buf充当读资源 //1.一开始&#xff0c;buf中没有数据可读的 1.写线程结束 信号量的机制 1.信号量 ----来描述 可使用的资源的个数 2.p操作 表示 使用这个资源 资…