下标越界

异常的捕获和处理

南笙酒味 提交于 2020-01-18 20:39:40
异常的捕获和处理 异常概述 java异常处理 初识异常 异常:程序中运算过程中出现的错误,例如:文件找不到,网络连接中断,算术运算序偶无,数组下标越界等运行程序。 上图为空指针异常 java异常体系结构 java中异型有很多种类型,java体系结构图如下所示 Error类: 表示仅靠程序本身无法恢复的严重错误,如内存溢出,动态链接失败,虚拟机错误…假如出现这样的错误,应尽力使程序安全退出。 Exception类: 由java应用程序抛出和处理的严重错误,如所需文件找不到,网络连接不同或连接中断,算数运算错误,数组下标越界… Exception又分为两大异常类: 1.运行时异常:包括RuntimeException以及所有子类,不要求程序必须对它们进行处理。 2.Checked异常(非运行时异常):除了运行时异常外的其他从Exception类继承来的异常类。 异常 说明 Exception 异常层次结构的根类 ArithmecticException 算数错误异常,如以零作为除数 ArrayIndexOutOfBoundsException 数组下标越界 NullPointerException 尝试访问Null成员 ClassNotFoundException 不能加载所需的类 InputMismatchException 与得到的数据类型与实际的输入类型不匹配

一些常用的算法技巧总结

柔情痞子 提交于 2020-01-18 07:57:09
1. 巧用数组下标 数组的下标是一个隐含的很有用的数组,特别是在统计一些数字,或者判断一些整型数是否出现过的时候。例如,给你一串字母,让你判断这些字母出现的次数时,我们就可以把这些字母作为 下标 ,在遍历的时候,如果字母a遍历到,则arr[a]就可以加1了,即 arr[a]++; 通过这种巧用下标的方法,我们不需要逐个字母去判断。 我再举个例子: 问题: 给你n个无序的int整型数组arr,并且这些整数的取值范围都在0-20之间,要你在 O(n) 的时间复杂度中把这 n 个数按照从小到大的顺序打印出来。 对于这道题,如果你是先把这 n 个数先排序,再打印,是不可能O(n)的时间打印出来的。但是数值范围在 0-20。我们就可以巧用数组下标了。把对应的数值作为数组下标,如果这个数出现过,则对应的数组加1。 代码如下: public void f(int arr[]) { int[] temp = new int[21]; for (int i = 0; i < arr.length; i++) { temp[arr[i]]++; } //顺序打印 for (int i = 0; i < 21; i++) { for (int j = 0; j < temp[i]; j++) { System.out.println(i); } } } 提醒:可以左右滑动 利用数组下标的应用还有很多

Python--基础二

纵饮孤独 提交于 2020-01-14 07:25:02
Python基础:字符串str & 列表list & 元组tuple & 字典dict & 集合set Python 基础 2 字符串 str 字符串是以单引号或双引号括起来的任意文本 字符串不可变 创建字符串 str1 = "lee is a good man!" str2 = "lee is a nice man!" str3 = "lee is a handsome man!" 字符串运算 字符串拼接 str6 = "lee is a " str7 = "good man" str8 = str6 + str7 print("str6 =", str6) print("str7 =", str7) print("str8 =", str8) a="hello"+"-"*50+"world" print(a) print(a.__len__()) print(len(a)) 输出重复字符串 输出重复字符串 str9 = "good" str10 = str9 * 3 print("str10 =", str10) 访问字符串中的某一个字符 通过索引下标查找字符 字符串名[下标] str11 = "lee is a good man!" print(str11[1]) #str11[1] = "a" #打印会报错,因为字符串不可变 #print("str11 =", str11)

Java数组

房东的猫 提交于 2020-01-13 07:22:53
什么是数组 问:编写代码保存 4 名学生的考试成绩。 答:简单啊,定义 4 个变量呗 问:那“计算全年级 400 名学生的考试成绩”,肿么办 答: 。。。。。。。 数组 ,就可以帮助你妥妥的解决问题啦!! 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据,比如可以定义 int 型的数组 scores 存储 4 名学生的成绩 数组中的元素都可以通过下标来访问,下标从 0 开始。例如,可以通过 scores[0] 获取数组中的第一个元素 76 ,scores[2] 就可以取到第三个元素 92 啦! 如何使用 Java 中的数组 Java 中操作数组只需要四个步骤: 1、 声明数组 语法: 数据类型[ ] 数组名; 或者 数据类型 数组名[ ]; 其中,数组名可以是任意合法的变量名,如: 2、 分配空间 简单地说,就是指定数组中最多可存储多少个元素 语法: 数组名 = new 数据类型 [ 数组长度 ]; 其中,数组长度就是数组中能存放元素的个数,如: 话说,我们也可以将上面的两个步骤合并,在声明数组的同时为它分配空间,如: 3、 赋值 分配空间后就可以向数组中放数据了,数组中元素都是通过下标来访问的,例如向 scores 数组中存放学生成绩 4、 处理数组中数据 我们可以对赋值后的数组进行操作和处理,如获取并输出数组中元素的值 在 Java

通过数组实现ArrayList的各种方法

旧城冷巷雨未停 提交于 2019-12-29 14:49:32
代码: package cn.tedu.collection.list; import java.util.Arrays; //用数组实现ArrayList public class ListText { public static void main(String[] args) { //创建子列表 ListArray list=new ListArray(); list.add(“abc”); list.add(“c”); list.add(“3abc”); list.add(“a54bc”); list.add(0,“1”); list.remove(1); System.out.println(list.subList(0,2)); System.out.println(list); } } //实现ArrayList class ListArray{ //用于存储集合数据的数组 String[] data; //表示数组下标 //元素的个数 int size=0; //通过无参构造创建对象 //指定数组长度 public ListArray(){ //默认长度为10 data=new String[10]; } //有参构造 //可以指定初始容量 public ListArray(int initCapcity){ //数组长度为给定的参数值 /

数组总结

寵の児 提交于 2019-12-25 12:13:16
一,心得体会 最近学了数组,解决之前做循环结构题时的几点困难,比如输入一堆数、排序之类的。而数组又能把矩阵和程序设计联系起来,真正感到了计算机对于辅助数学计算的好处与便利。不过,再一次感到难度的提升,感觉快跟不上了,手机打代码还是适应不了,太难受了。 二,知识点整理 1、数组 数组:多个内存变量元素,共同使用一个变量名称,并用下标加以区分 数组与变量一样,必需先定义,再使用 1int a[10]; //定义了一个名称为 a 的,拥有 10 个 int 类型元素的数组 定义数组时,[] 里的内容不能是浮点数据,也不能是变量或者含有变量的表达式 1int a[1+2*2], b[‘a’]; //这种定义时正确的 2、 理解数组定义 int ar[10]; 这只能表示存在一个拥有 10 个 int 类型的元素的数组 ar,在这条定义语句之外的其他地方,ar 不表示数组的任何一个元素,也不表示数组的所有元素,它仅仅是数组名称而已 3、 数组元素的使用 数组元素的定义、与使用,是完全不一样的 设有如下数组:int a[10]; a 数组的 10 个元素分别是:a[0],a[1], a[2]…a[9] 数组元素下标范围取值范围在[0, n)之间,其中 n 为数组元素个数,这个数组将在内存中占用 40B 的连续存储空间 int array[5]; array 数组应该有 5 个元素:array

java和c#对比表(基础版)

喜夏-厌秋 提交于 2019-12-25 04:25:33
  JAVA与C#语法对照表 JAVA C# 程 序 入 口 大括号 左大括号,跟随语句后面,右大括号独占一行 左右大括号都独占一行 包的命名 名字由小写字母组成,通常使用组织的网络域名逆序。关键字: package 例: package net.javagroup.research.powerproject; 名字使用Pascal命名方式。关键字: namespace 例: namespace HelloWorld 导入包的语法 关键字: import 例: import net.javagroup.research.powerproject; 导入包的语句必须在 package 之后, class 之前 关键字: using 例: using HelloWorld; 导入包的语句,可以写在 namespace 外部或者内部 类的命名 名字使用Pascal命名方式。关键字: class ,要求类名与源文件名必须一致。 例: class Hello{} 名字使用Pascal命名方式。关键字: class ,不要求类名与源文件名一致。 例: class Hello{} main方法 public static void main ( String [] args){}//命令行参数必须有 访问修饰符 static void/int Main ( string [] args){}/

第5单元数组总结

孤街浪徒 提交于 2019-12-24 20:20:14
基本知识: 第1课、一维数组的定义 1.数组就是一组相同类型的变量。他们往往都是为了表示同一批对象的统一属性,如一个班级所有同学的身高,全球所有国家的人口数等。 2.数组可以是一维的,也可以是二维或者多维的. 3.在数学中可以用hi表示第i个同学的身高,i为编号,在c++中,使用一维数组时,一般是从0开始编号。,h[i]就表示第i+1个同学的身高,i称为下标变量。 4.读入50个同学的身高,语句就可以这样写: for(i=0;i<=49;i++) cin>>h[i]; 5.数组经常应用在大批量、同一类型的数据处理任务中。 6.定义一维数组的格式如下: 类型标识符 数组名[常量表达式]; 7.其中类型标识符可以是任何基本数据类型,也可以是结构体等构造类型,相同类型的数组可以一起定义.数组名必须是合法的标识符,常量表达式的值即为数组元素的个数。 8.注意:int h[50] 就表示定义一个一维数组h共有50个元素,它们的编号从0开始到49,每个元素都是int类型。 9.还有几种特殊的定义: int d[50],g[100]; int a[5*10]; #define N 50int b[N] 10.假设要储存10000个人的中考成绩和性别,可以定义两个数组: int score[10000];//或者float score [10000]; bool xb[10000];/

Excel VBA 数组下标越界出错

≯℡__Kan透↙ 提交于 2019-12-19 23:04:06
今天调试一段EXCEL VBA代码,在使用数组时总出现下标越界的报错,害得我查了半天,后来我把vba的本地窗口打开了,一下子就发现问题了。 其实代码很简单,就不写注释了。 当然,我能看出这个问题来,就是通过本地窗口, 注意这个红箭头,Count为0,所以这个数组就出错啦。 解决问题很简单了,正则表达式写错了,呵呵,少了一个点。 呵呵,问题解决啦。 来源: 51CTO 作者: raincity 链接: https://blog.51cto.com/shadingyu/2460076

ArrayIndexOutOfBoundsException 解析

随声附和 提交于 2019-12-14 07:25:04
转载自: https://article.itxueyuan.com/XKrXkP 叙述 在逛 Stack Overflow 的时候,发现了一些访问量像昆仑山一样高的问题,比如说这个:为什么会发生 ArrayIndexOutOfBoundsException ?这样看似简单到不值得一问的问题,访问量足足有 69万+,这不得了啊!说明有不少的初级程序员被这个问题困扰过。实话实说吧, 我 也有点吃不准为什么。 来回顾一下提问者的问题: 如果你也曾被这个问题困扰过,或者正在被困扰,就请随我一起来梳理一下问题的答案。打怪进阶喽! 来看这样一段代码,它就可以引起 ArrayIndexOutOfBoundsException 。 String[] names = { "沉", "默", "王", "二" }; for (int i = 0; i <= names.length; i++) { System.out.println(names[i]); } 错误的堆栈信息如下所示。 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at com.cmower.java_demo.stackoverflow.Cmower1.main(Cmower1.java:7)