首页
学习
活动
专区
圈层
工具
发布

《Java从入门到放弃》JavaSE入门篇:异常

Java中的错误分为两类:错误(Error)和异常(Exception) 错误一般都是在编译前IDE就能发现并提示,例如非要给整型变量赋一个超大的数值: 这就是一个典型的Error。...程序在运行时出现的问题,就叫异常!!!如果在编程时不考虑到对这些异常的处理,当出现异常时,程序就会停止。...("请输入整数:"); int i = input.nextInt(); int sum = 10/i; System.out.println(sum); } 这段代码在编译时是没有任何问题的,但在运行时输入...Java中异常的三种处理方式: try-catch-finally throw和throws 一、try-catch-finally     try部分是必须的,用来捕获异常,一般把有可能出现异常的代码放入其中...我叫小明给我带份红烧肉,小明去食堂发现没有红烧肉(这就相当于异常出现了),他不知道如何处理,就回到寝室告诉我没有红烧肉,然后我再来处理。

55730

基础算法篇——快速排序

如果l >= r,那么我们就没有递归的必要,直接return即可 但是如果l > r,我们需要对其内部进行快速排序,并且在末尾处对排序后分界点的两侧再次进行递归处理 暴力求解算法 我们首先来介绍暴力求解法...i和j指针,分别放于l-1和r+1处 因为我们后面需要判断该数与分界数的关系,所以我们首先移动指针再进行判断,所以我们需要将指针放在边缘处 在指针未相遇之前,我们将i向右移动,将j向左移动 首先我们需要判断两个指针没有相遇...没有相遇我们开始执行排序操作: 我们进行i++,如果当前数小于分界数,我们继续移动,直到当前数大于分界数,停止移动 我们进行j--,如果当前数大于分界数,我们继续移动,直到当前数小于分界数,停止移动...快速排序代码 我们来简单实现一下快速排序算法: import java.util.Scanner; public class quick_sort { public static void...求解方法: 我们根据快速排序算法来将数组进行排序,舍弃掉左右两侧的一侧,对另一侧进行查找排序,递归即可 求解代码: import java.util.Scanner; public class eee

25030
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简单聊聊JAVA中的异常

    二、异常引出 看一段代码,看看它有什么问题。 从代码上看貌似没问题,逻辑都正常。但是实际还是会有很多问题。比如,我输入不是数字,或者除数为0,这都会产生异常。...(Scanner.java:1594) at java.base/java.util.Scanner.nextInt(Scanner.java:2258) at java.base/java.util.Scanner.nextInt...//除法异常错误 我输入这样的参数,程序就报错了,那如何处理这些异常,让程序能执行下去呢?...发出的错误操作,只能尽量避免,无法用代码处理。...2.Exception:一般表示所有程序中的错误,所以一般在程序中将进行try…catch的处理。 大概的思路图如下: image.png 我们可以这样理解,非受检异常如果代码有问题,是不会报错的。

    951110

    关于图片验证码的若干问题

    图片验证码是在登录、注册中防止机器注册、灌水等的常用一种小技术。现在贴出我的一种实现代码,也是借鉴别人的。...现在主要的java类如下:     public class RandImgCreater {     private static final String CODE_LIST = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890...);         return new Color(r, g, b);     } }        凭java类就可以生成相应的代码,建立一个img.jsp就可以调用:具体代码如下:       ...RandImgCreater(response);                 String rand = rc.createRandImage();                 //如果没有下面两句代码...没有这句,在tomcat服务器下是不存在问题的。还有下面红线句调用时能防止getOutputStream的异常错误。

    61030

    别再造轮子了,Google 开源的 Guava 工具库真心强大!

    BiMap 双向映射 1、将值映射回键的传统方法是维护两个独立的映射,并使它们保持同步,但这很容易产生错误,并且当映射中已经存在一个值 Map nameToId = ...> 的代码,这很难看,而且使用起来很尴尬。...ImmutableTable ArrayTable:要求在构造时指定行和列的完整范围,但在表密集时由二维数组支持以提高速度和内存效率,ArrayTable的工作原理与其他实现有些不同 在线演示源码:https...("\t任务3实际耗时:" + stopwatch.stop().toString());// 任务3实际耗时:1.965 s     } ---- ---- 欢迎加入我的知识星球,一起探讨架构,交流源码...提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。 获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。 文章有帮助的话,在看,转发吧。

    1.3K31

    别再重复造轮子了,推荐使用 Google Guava 开源工具类库,真心强大!

    BiMapTest.java Table 表结构数据 1、当试图一次在多个键上建立索引时,您将得到类似 Map> 的代码,这很难看,而且使用起来很尴尬...ImmutableTable ArrayTable:要求在构造时指定行和列的完整范围,但在表密集时由二维数组支持以提高速度和内存效率,ArrayTable的工作原理与其他实现有些不同 在线演示源码: https...* Stopwatch start():启动秒表,如果秒表已经在运行,则 IllegalStateException  * Stopwatch stop():停止秒表,将来的读取将返回到目前为止经过的固定持续时间...工作 3 年的同事不知道如何回滚代码! 23 种设计模式实战(很全) Spring Boot 保护敏感配置的 4 种方法! 再见单身狗!...Java 创建对象的 6 种方式 阿里为什么推荐使用 LongAdder? 新来一个技术总监:禁止戴耳机写代码。。 重磅!

    1.9K40

    java input.nextline_关于java:Scanner#nextLine()留下一个剩余的换行符

    在catch块中对nextLine的调用是否不应该占用其余的行(包括换行符)并在下一次迭代中正确提示用户? 注意:我已决定打印它们以尝试弄清楚发生了什么,但没有雪茄。...之后使用nextLine,我们将消耗剩余的行分隔符,而不是next的值,在Scanner处的更多信息是在使用next(),nextInt()或其他nextFoo()方法之后跳过nextLine())。...(如前所述)将仅消耗最后一个nextInt()调用后仍保留的行分隔符,因此我们仍然没有使用Scanner中的badinput。...作为用户,您一次只能输入一行字符对于扫描仪来说是没有意义的。 因此,您键入8(其中代表操作系统的实际换行符)。 nextInt()之后,8已被消耗。 然后,键入2,使暂挂输入为2。...enter a two-digit year 因为用户在第一行输入了所有3个值,所以您的代码将获得这些值,但是即使没有必要,仍将打印接下来的两个提示。

    1.5K10

    DFS深度优先算法 —— AcWing 842. 排列数字AcWing 843. n-皇后问题

    递归结束判定:见代码,当 r == n的时候,说明应该处理第 n行了,也代表第 0~n-1行放好棋子,也就是整个棋盘放好了棋子,也就是得到了一种解,也就是递归结束。...dg[i + r] 表示 r行i列处,所在的对角线上有没有棋子,udg[n - i + r]表示 r行i列处,所在的反对角线上有没有棋子,cor[i]表示第i列上有没有棋子。...如果 r行i列的对角线,反对角线上都没有棋子,即!cor[i] && !dg[i + r] && !udg[n - i + r]为真,则代表 r行i列处可以放棋子。...dg[i+r] 和udg[r-i+n]的理解,对角线y1=x1+b1,y2=-x2+b2,如果在不同行,但在同一对角线,经过方程计算得到的截距都是一样的,那么b1=y1-x1,b2=y2+x2,同时为了防止...y1-x1是个负数,加上偏移量n 3.代码 import java.util.Scanner; public class Main{ static int N=11,n; static

    25110

    Java常用工具之异常

    在Java中,通过Throwable及其子类描述各种不同的异常类型。 ? Error Error是程序无法处理的错误,表示运行应用程序中较严重问题。...大多 数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。...例如,Java虚拟机运行错误(Virtual MachineError),当 JVM 不 再有继续执行操作所需的内存资源时,将出现 OutOfMemoryError 这些错误是不可查的,因为它们在应用程序的控制和处理能力之外...- 当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统 终止。同时,意味着Java程序的终止。 - 对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式 有所不同。...即Error、 RuntimeException或它们的子类,那么可以不使用throws关键字来 声明要抛出的异常,编译仍能顺利通过,但在运行时会被系统抛出。

    79640

    面向对象先导课感想

    收获和感想 作为一个虽然没有专门学过java但是早已经熟悉OOP程序设计方式,并使用 C# 有过大概几千行开发经验的学员,我的感想可能和大部分人有些不同。...int b = sc.nextInt(); System.out.println(a + b); } } 有一个之前遇到过的坑,就是java的异常处理机制。...在java中,如果一个函数(方法)需要抛出异常的话,是必须在当前函数(方法)处进行声明的。同时外部调用这个函数(方法)的部分也必须使用异常处理语句包装起来(即必须放进 try { } 中)。...我个人的建议是:将人工查看代码和黑盒测试相结合 人工查看可以一定程度上保证设计模式按照要求。同时黑盒测试也可以真正更加方便和可感地衡量一个程序的真实性能和不足,同时大大提高测试效率。...关于课程本身,我想说的就是如何平衡一下Java语言的教学和真正面向对象知识的教学,让无java基础的人不至于完全掉队,也让有一定基础的人不被太多拖慢进度。

    85440

    异常和异常处理

    编程的错误分为语法错误、逻辑错误、异常三种,其中语法错误和逻辑错误不属于异常。因为如果发生语法错误,Java程序根本无法运行;而如果发生逻辑错误,Java程序也不可能得到正确的结果。...我们说的异常是指程序既没有语法错误,也没有逻辑错误,而是在运行过程中遇到一些程序以外的错误,导致Java程序发生异常,从而导致Java程序崩溃。...错误:指的是Java虚拟机无法解决的严重问题,一般不编写针对性的代码进行处理。 异常:指其他因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。...2、异常处理 通常情况下,异常处理方式有以下三种: 在当前方法发生异常的代码处直接捕获并处理。这种方式对调用者来说,可能完全不知道被调用方法发生了异常。 在当前方法中不处理,直接抛给调用方处理。...这种方式会导致当前方法运行中断,退回到调用防的调用代码处进行处理。 当某些代码不满足语法要求或业务逻辑时,可以手动创建符合语法要求的异常对象,然后抛出。

    2.5K40

    JAVA算法竞赛输入输出专题

    大家好,又见面了,我是你们的朋友全栈君。 2020.2.23更新,增加了数组模块 ---- 前言 小编由于报名了蓝桥杯Java组,所以日常做题从使用C/C++转变成使用Java。...文件名问题 在比赛提交的代码中,主类必须以public class Main来命名,而且不能带package语句否则会报出编译错误。...= cin.nextInt(); System.out.println(a + b); } } } 上面代码展示了最基本的输入输出框架,输入类Scanner包含在java.util类包中,首先应该把它导入...,我们很容易理解以下的这段java代码 while (cin.hasNext()) //当输入流中还有数据时 { a = cin.nextInt(); b = cin.nextInt...字符&字符串 Scanner类中并没有提供单个字符char类型的读入方法,但是我们可以先调用next()方法读取只包含一个字符的字符串,然后用charAt(0)返回0号索引处的字符,即可得到读取到单个字符

    88210

    【Dart】004-流程控制

    所以一个 if...else 语句可以表示两段分支的抉择,另外如果 else 代码块中没有处理内容,可以省略。 闲聊*:这些东西,基本所有的编程语言都是极为相似的!...代码示例 import 'dart:math'; main() { // 获取随机数 int random = Random().nextInt(3); // switch 语句 switch...case 后面匹配值,必须是 常量; 自定义的类型不可以重写并实现 == 方法(顺带说一句,像 String 、int 这样的类中,确实覆写了 == 操作符,但在 dart 层并未实现,这是允许的。)...把上面代码的 tag1 处改为 break ,也就是说只要 i 是偶数,整个循环就会被完全终止。...一旦发生异常,不作处理的话,整个程序就会因错误而停止,无法执行之后的任务。另外异常的信息记录也能让开发者更容易定位问题,所以对异常的捕获和处理是非常重要的。

    13500

    不服来战,看Kotlin如何完爆Java

    我想我还是通过解释Kotlin语言的好处来开始我的这篇文章吧。 在这一点上,没有人惊讶地看到相同的web应用程序运行于任何设备,任何平台(Android、iOS、 Windows、MacOS…)。...尽管Java解决了设备之间的互操作性问题,但它带来了一系列新的问题,以下便是其中一些: 注意:这些问题虽然在Java 8和9中得到了解决,但在API 24以下的Android SDK中是不可用的,这使得它们实际上无法使用...对于optionals没有本地支持:虽然有Optional 类,但它的使用意味着生成大量的样板代码,如果对选项的支持是在语言本身内构建的,而不是扩展的,我们可以保存这些代码。...= Null)与可怕的NullPointerException斗争,而没有填满他们的代码?...为什么Kotlin 会打破这一切 Java是一种非常冗长的语言,它需要为任何操作编写大量的代码,并生成大量的文件(每个类一个)。第一个问题可能会导致我们代码的维护成本更高,更容易出现错误。

    1.2K50

    Java异常处理机制

    Error Error是程序无法处理的错误,表示运行应用程序中较严重问题。 大多数的错误与代码编写所执行的操作是没有什么关系的,而表示代码运行的时候Java虚拟机出现的系列问题。...如何处理异常 异常处理 在Java应用程序中,异常处理机制为:抛出异常、捕获异常 我们经常看到运行程序代码,如果出现错误,我们的控制台就是一片红,这是JVM有一个默认的异常处理机制,即将该异常的名称、异常的信息...、异常出现的位置打印在了控制台上,同时将程序停止运行。...我们知道,有时候,看代码时,他可能要你开始运行才开始抛出错误。比如下面这段代码。 而我使用Throws来声明一个这段代码可能存在的错误时,如果恰好有错误,将会直接提示出现,不需要运行。...其他 在Java中定义了两种类型的异常和错误。 JVM 异常:由 JVM 抛出的异常或错误。

    64330

    笨办法学 Java(二)

    married 变量在程序的其他任何地方都不在范围内;在第 1 到第 28 行或第 39 到第 48 行引用它会导致编译错误。 这就是为什么我必须在程序的开始处声明title。...当它找到匹配项时,它会从case所在的左侧移动到右侧,并开始运行代码,直到被break停止。 如果没有case匹配,且有一个default情况(可选),那么default中的代码将被运行。...编程中常见的逻辑错误是,如果您意外地计算距离而不是停止,就会发生“栅栏问题”。这个名字来自以下脑筋急转弯:如果我需要用一堆略长于一米的木板建造五米长的栅栏,我需要多少栅栏柱?...程序实际上没有自行停止;在程序一遍又一遍地重复时,我不得不按下 CTRL-C 来停止它。 这段代码中有一个无限循环。第 16 行检查变量secret的值是否与变量guess的值不同。...(); b = keyboard.nextInt(); c = keyboard.nextInt(); total = a + b + c; 如果我告诉你人类要输入五个数字,你的代码可能是这样的: double

    50610

    掌握这些IDEA Debug调试技巧很重要

    趁热打铁,今天给大家带来几个我日常工作以及阅读源码必备的 IntelliJ IDEA 高级调试技巧,分分钟要起飞的节奏 断点处添加 log 很多程序员在调试代码时都喜欢 print 一些内容,这样看起来更直观...,print 完之后又很容易忘记删除掉这些没用的内容,最终将代码提交到 remote,code review 时又不得不删减这些内容重新提交,不但增加不必要的工作量,还让 log tree 的一些节点没有任何价值...ThreadLocalRandom.current(); int count = 0; for (int i = 0; i < 5; i++) { if (isInterested(random.nextInt...,逐步排查,稍不留神,就可能有遗漏 我们可以在 IntelliJ IDEA 中为某个字段添加断点,当字段值有修改时,自动跳到相应方法位置 使用起来很简单: 在字段定义处鼠标左键添加断点(会出现「眼睛」的图标...如果修改字段值的方法比较多,也可以在 Condition 的地方定义断点进入条件, 有了这个功能的加成,相信你阅读源码会顺畅许多 异常断点 除了阅读源码,一定是遇到了异常我们才开始调试代码,代码在抛出异常之后会自动停止

    1.3K20

    Java类的初始化和清理

    但是,出于一些原因,Java 设计者们决定使用无参构造器这个名称,我(作者)认为这种叫法笨拙而且没有必要,所以我打算继续使用默认构造器。...但在 main() 方法中,有一本书没有登记。要是没有 finalize() 方法来验证终结条件,将会很难发现这个 bug。 你可能注意到使用了 @Override。...当它工作时,一边回收内存,一边使堆中的对象紧凑排列,这样"堆指针"就可以很容易地移动到更靠近传送带的开始处,也就尽量避免了页面错误。...一旦程序进入稳定状态之后,可能只会产生少量垃圾,甚至没有垃圾。尽管如此,复制回收器仍然会将所有内存从一处复制到另一处,这很浪费。...同样,Java 虚拟机会跟踪"标记-清扫"的效果,如果堆空间出现很多碎片,就会切换回"停止-复制"方式。

    1.2K20
    领券