0基础学java之Day09(下午完整版)

news2024/10/19 4:19:46

六、数组

概念: 1.数组是引用数据类型 2.数组中的数据叫做元素 3.元素都有标号叫做索引/下标 4.下标从0开始 5.数组一旦初始化成功,长度不可变(意味着数组没有添加和删除) 6.数组中的元素在内存中是挨在一起的

声明: 数据类型[] 数组名; --- 推荐 数据类型 数组名[];

6.1一维数组

6.1.1静态初始化:
元素类型[] 数组名 = new 元素的类型[]{元素1,元素2,....};
String[] names = new String[]{"麻生希","椎名空","水菜丽","朝桐光","爱田奈奈"};
先声明,再初始化
String[] names;
names = new String[]{"麻生希","椎名空","水菜丽","朝桐光","爱田奈奈"};
当声明与静态初始化在一个语句时,可以简略成:
元素的类型[] 数组名 = {元素1,元素2,....};
  String[] names = {"麻生希","椎名空","水菜丽","朝桐光","爱田奈奈"};
        //设置指定下标上的元素
        names[1] = "曾子俊";
        
        //获取指定下标上的元素
        String str = names[1];
        System.out.println("获取指定下标上的元素:" + str);
        
        //获取元素个数
        int len = names.length;
        System.out.println("获取元素个数:" + len);
        
        System.out.println("----------------------------------");
        
        //遍历元素 -- for循环
        for(int i = 0;i<names.length;i++){
            System.out.println(names[i]);
        }
​
6.1.2foreach/增强for循环
for(String element : names){//循环遍历names中的元素,依次赋值给element变量
            System.out.println(element);
        }
6.1.3for vs foreach

循环数组时使用到下标,就用for循环 循环数组时不使用到下标,就用foreach

6.1.3动态初始化

程序员指定长度,数据由系统自动分配默认值。

整数类型默认0 浮点类型默认0.0 字符类型默认' ' 布尔类型默认false 引用类型默认null - 空

元素类型[] 数组名 = new 元素类型[数组长度]
String[] names = new String[5];//[null,null,null,null,null]
元素类型[] 数组名;
数组名 = new 元素类型[数组长度]
String[] names;
names = new String[5];
//设置指定下标上的元素
        names[0] = "曾子俊1";
        names[1] = "曾子俊2";
        names[2] = "曾子俊3";
        names[3] = "曾子俊4";
        names[4] = "曾子俊5";
        此时如果再声明一个元素names[5] = "用良心做教育";
        会报错ArrayIndexOutOfBoundsException - 数组下标越界异常

案例:

创建长度为5的int数组,使用控制台输入元素,再获取数组中的最大值并输出 注意: int类型的数组是引用数据类型(数组都是引用数据类型) int类型数组中的元素是基本数据类型

Scanner scan = new Scanner(System.in);
//创建长度为5的int数组,使用控制台输入元素,再获取数组中的最大值并输出
        /**注意:
            int类型的数组是引用数据类型(数组都是引用数据类型)
            int类型数组中的元素是基本数据类型*/
        
        int[] arr = new int[5];
        
        for(int i = 0;i<arr.length;i++){
            System.out.println("请输入第" + (i+1) + "个数字:");
            int num = scan.nextInt();
            arr[i] = num;
        }
        
        //假设数组中第一个元素为最大值
        int max = arr[0];
        
        for(int i = 1;i<arr.length;i++){
            if(max < arr[i]){
                max = arr[i];
            }
        }
        
        System.out.println("最大值为:" + max);
    }
​

七、补一个上午的方法万年历

import java.util.Scanner;
public class Test08{
    //只能初始年的1月1日为星期一的才行
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        
        System.out.println("请输入开始年:");
        int startYear = scan.nextInt();
        System.out.println("请输入年:");
        int year = scan.nextInt();
        System.out.println("请输入月:");
        int month = scan.nextInt();
    
        
        printCalendar(startYear,year,month);
​
    }
    //打印日历
    public static void printCalendar(int startYear,int year,int month){
        int week=getWeek(startYear,year,month);
        int day=getDay(year,month);
        
        int count=0;
        
        System.out.println(year+"年"+month+"月");
        System.out.println("一\t二\t三\t四\t五\t六\t日");
        for(int i=1;i<week;i++){
            System.out.print("\t");
            count++;
        }
        for(int i=1;i<=day;i++){
            System.out.print(i+"\t");
            count++;
            if(count%7==0){
            System.out.println();
            }
        }
    }
    
    //获取星期
    public static int getWeek(int startYear,int year,int month){
        int allDay=getAllDay(startYear,year,month);
        int week=allDay%7;
        if(week==0){
            week=7;
        }
        return week;
    }
    
    //获取总天数
    public static int getAllDay(int startYear,int endYear,int endMonth){
        int allDay=getAllDayOfYear(startYear,endYear)+getAllDayOfMonth(endYear,endMonth)+1;
        return allDay;
    }
    
    //获取月的总天数
    public static int getAllDayOfMonth(int year,int endMonth){
        int allDayOfMonth=0;
        for(int i=1;i<endMonth;i++){
            allDayOfMonth+=getDay(year,i);
        }
        return allDayOfMonth;
    }
    
    //获取当月天数
    public static int getDay(int year,int month){
        int day=0;
        switch(month){
            case 1:case 3:case 5:case 7:case 8:case 10:case 12:
            day=31;
            break;
            case 4:case 6:case 9:case 11:
            day=30;
            break;
            case 2:
            if(isLeapYear(year)){
                day=29;
            }else{
                day=28;
            }
            break;
        }
        return day;
    }
    
    //获取年的总天数
    public static int getAllDayOfYear(int startYear,int endYear){
        int allDayOfYear=0;
        for(int i=startYear;i<endYear;i++){
            if(isLeapYear(i)){
                allDayOfYear+=366;
            }else{
                allDayOfYear+=365;
            }
        }
        return allDayOfYear;
    }
    
    
    //判断闰年的方法
    public static boolean isLeapYear(int year){
        if(year%4==0&&year%100!=0||year%400==0){
            return true;
        }
        else{
            return false;
        }
    }
}

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

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

相关文章

CTF(四)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目file_include。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 一&#xff0c;观察页面。 可以看到一段php代码。从则段代码中我们可以知道&#xff1a; 1&#xff0c;使用include引入check.php文件&#xff…

Excel制作工资表

需要用到的函数 函数要求如下&#xff1a; IFERROR 功能&#xff1a;处理公式中的错误&#xff0c;避免显示错误值。当公式产生错误时&#xff0c;使用自定义的值或表达式代替错误信息。 IFERROR(值, 错误值)SUM 功能&#xff1a;求和&#xff0c;计算一系列数字的总和。 语…

SSD |(七)FTL详解(中)

文章目录 &#x1f4da;垃圾回收&#x1f407;垃圾回收原理&#x1f407;写放大&#x1f407;垃圾回收实现&#x1f407;垃圾回收时机 &#x1f4da;解除映射关系&#x1f4da;磨损均衡 &#x1f4da;垃圾回收 &#x1f407;垃圾回收原理 ✋设定一个迷你SSD空间&#xff1a; 假…

Windows 和 Ubuntu通讯的网络设置

如果你是一个嵌入式工程师&#xff0c;因为工作需要&#xff0c;在linux下进行开发&#xff0c;一定会遇见配网问题。这篇文章解决Windows 和虚拟机Ubuntu通讯的网络设置的问题。 Windows的网络配置&#xff1a; 在配置网络前&#xff0c;先了解一下windows和ubuntu的网络构成…

CTFHUB技能树之SQL——过滤空格

开启靶场&#xff0c;打开链接&#xff1a; 既然是过滤空格&#xff0c;绕过空格的方法&#xff1a; 用/**/或%0a替代空格 &#xff08;1&#xff09;判断注入点 1 and 11# 会显示hacker 1/**/and/**/11# 有回显 1/**/and/**/12# 无回显&#xff0c;说明是整数型注入 &#…

嵌入式C++中内存分配基本实现方法

大家好,今天主要给大家分享一下,如何使用计算机中的内存空间进行分配,观察具体现象。 第一:C语言动态空间分配方式 第二:C++中动态内存分配方法 new 可以自动计算数据类型的大小 与 类型的转换 malloc 只能手动进行。 2.new 可以在分配空间的时候初始化 malloc 不行。 第三…

python采集汽车之家数据

python采集汽车之家数据 一、寻找数据接口二、发送请求获取响应三、解析数据四、完整代码一、寻找数据接口 如下图所示,在汽车之家首页点击报价图标: 在下图中选择价位,例如选择15-20万: 打开浏览器开发者工具,刷新页面,找到数据接口。接下来,通过翻页寻找接口url的变…

uni-app uni.setTabBarBadge 不生效

‘text’属性&#xff0c;类型必须是字符串&#xff0c;而接口返回的是数值&#xff0c;没有注意到&#xff0c;所以怎么都不生效&#xff0c;也不会有报错&#xff01;

渗透测试导论

渗透测试的定义和目的 渗透测试&#xff08;Penetration Testing&#xff09;是一项安全演习&#xff0c;网络安全专家尝试查找和利用计算机系统中的漏洞。 模拟攻击的目的是识别攻击者可以利用的系统防御中的薄弱环节。 这就像银行雇用别人假装盗匪&#xff0c;让他们试图闯…

day-68 使二进制数组全部等于 1 的最少操作次数 I

思路 关键&#xff1a;对同一个i至多操作一次&#xff0c;就可以做到最少的操作次数&#xff0c;且操作的顺序不重要&#xff0c;那么即可从左到右操作&#xff0c;结果一样的&#xff0c;遇到1不操作&#xff0c;遇到0则操作&#xff0c;用一个变量记录操作次数&#xff0c;最…

Go程序的一生——Go如何跑起来的?

​​​​​​​ 引入 我们从一个 Hello World 的例子开始&#xff1a; package mainimport "fmt"func main() {fmt.Println("hello world") }当我用我那价值 1800 元的 cherry 键盘潇洒地敲完上面的 hello world 代码时&#xff0c;保存在硬盘上的 hell…

青少年编程能力等级测评CPA C++一级试卷(1)

青少年编程能力等级测评CPA C一级试卷&#xff08;1&#xff09; 一、单项选择题&#xff08;共20题&#xff0c;每题3.5分&#xff0c;共70分&#xff09; CP1_1_1&#xff0e;在C中&#xff0c;下列变量名正确的是&#xff08; &#xff09;。 A&#xff0e;$123 B&#…

无人机之定高算法篇

一、无人机高度测量原理 无人机的高度测量通常依赖于多种传感器&#xff0c;其中主要包括&#xff1a; 气压计&#xff1a;通过测量大气压力的变化来确定高度。在大气中&#xff0c;随着高度的增加&#xff0c;气压会逐渐降低。无人机搭载的气压计会感知大气的压力变化&#…

当我们修复测试用例时,到底是修复的什么?

当我们运行了测试用例&#xff0c;发现其中一些测试用例未能通过。ok&#xff0c;这下要修复测试用例了&#xff01;但是&#xff0c;到底需要修复哪些内容呢&#xff1f; 其实从用例被加载到最终执行的过程中&#xff0c;有很多因素可能导致测试失败&#xff1a; 在测试构建过…

C语言中的文件操作:从基础到深入底层原理

文件操作是几乎所有应用程序的重要组成部分&#xff0c;特别是在系统级编程中。C语言因其高效、灵活以及接近硬件的特点&#xff0c;成为了文件操作的理想选择。本文将全面深入地探讨C语言中的文件操作&#xff0c;从文件系统的概念到具体的文件操作函数&#xff0c;再到底层的…

生成器和迭代器

迭代器 定义 迭代器是一个实现了选代协议的对象&#xff0c;它可以让我们遍历一个容器中的所有元素&#xff0c;而不需要知道容器的内部结构&#xff0c;迭代器可以被用于遍历列表、元组、字典、集合等容器类型。 工作原理 __iter__():方法返回迭代器对象本身&#xff0c;有…

《15分钟轻松学Go》教程目录

在AI快速发展的时代&#xff0c;学习Go语言依然很有用。Go语言擅长处理高并发任务&#xff0c;也就是说可以同时处理很多请求&#xff0c;这对于需要快速响应的AI服务非常重要。另外&#xff0c;Go适合用来处理和传输大量数据&#xff0c;非常适合机器学习模型的数据预处理。 …

leetcode动态规划(一)-理论基础

本节主要参考&#xff1a;代码随想录 题目分类 动态规划释义 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 动态规划中每一个状态一定是由上一个状态推导出来…

WinX86内核02-驱动程序

把昨天的程序改用 c++ 编译,改成 .cpp ,发现编译报错 原因是名称粉碎,因此可以直接 extern “C”声明一下这个函数 或者用 头文件(推荐) 因为 在头文件中 可以把 头文件一起包含进去 #pragma once extern "C" { #include <Ntddk.h> ​ /*驱动入口函…

一文搞懂模型倍率怎么计算的,以及模型分组倍率原理!

&#x1f4cd; 已知&#xff1a; ① 输入token&#xff1a;又名 提示、Input token 数 ② 输出token&#xff1a;又名 补全、Output token 数 &#x1f4cd; 基准价格【最初 gpt3.5 的价格&#xff0c;所以倍率越大&#xff0c;越聪明越贵&#xff0c;倍率越小越省钱越笨】 on…