【202105小白训练营】-day05 异常+String

java流程控制

1)顺序结构
2)分支结构:if、if-else、else-if(互斥)、switch-case-break-default
else-if和switch语句可以实现同样的业务,它们可以互换。else-if(a==b)switch(phone,number)
3)循环结构:while、do-while、for。while可以在外部程序中去定义,作为参数传入,业务更加灵活;for循环i值只为自身来使用。
4)死循环 ATM,while(true){}、for(;;)在实际代码中都有应用。
5)配合if语句进行判断,一定条件触发后跳出死循环。
break; 跳出,它会执行while后的代码、
continue;跳过本次方法、后面的代码继续执行
return返回; 不执行while后的代码,它结束当前方法

异常,不属于流程控制,专门门类,程序出现bug错误,可控错误。
错误:
1)致命错误:系统级别错误,蓝屏,磁盘坏了(不是程序员能解决的错误 Error)
2)程序BUG:一般逻辑错误。例如:扣钱 500(这些错误是程序员可控,这些错误叫异常 Exception)

常见的异常有什么呢?
1)10/0 a/b 被零除异常
2)数组下标越界 int[] a = new int[3],访问某个下标 a[30]

涉及到:try-catch,try-catch-finally,try-catch-throw,方法后main,单元测试方法后throws
try 试图
catch 捕获
finally 最终,释放资源
throw 抛出异常
throws 接收异常

package cn.tedu.exception;

import java.util.Scanner;

import org.junit.Test;

//演示异常处理,通过错误信息快速定位故障点
public class TestException {
	@Test
	public void tryCatch() {
		//被零除异常
		//try试图,尽量不要
		try {
			int a = 10/0;		//把可能出错的代码放入
			System.out.println(a);
		}catch(Exception e) { //如果try中的代码出错,java会把错误信息封装到e对象实例中
			//捕获异常
			e.printStackTrace(); //把错误信息打印控制台上,用户是看不到
		}
	}
	
	@Test
	public void tryCatchFinally(){
		//键盘录入,造成非法值,异常;释放复杂对象资源
		//Resource leak: 'scan' is never closed 复杂变量是不自动释放空间,GC垃圾回收站
		Scanner scan = new Scanner( System.in ); //监控键盘
		//从键盘上获取输入转换整数
		System.out.println("请输入数字:");
		
		try {
			int number = scan.nextInt(); //把键盘输入的内容,回车后,转换成整数
			System.out.println(number);
		}catch(Exception e) {
			e.printStackTrace();
		}finally {	//死活都执行,程序正常执行,程序出错还执行
			scan.close();
			System.out.println("执行finally");
		}
	}
	
	@Test	//抛出异常,处理异常,数组越界
	public void throwException() throws Exception  {
		try {
			int[] n = {1,2,3};
			System.out.println( n[3] ); //越界报错
		}catch(Exception e) {
			e.printStackTrace();
			
			//对异常进行处理,抛出到调用者(本方法),同时改变错误信息(中文),让调用者方便识别
			//Unhandled exception type Exception //没人处理这个异常
			throw new Exception("数组越界");  //创建了一个新的异常,错误信息就变成参数的内容
			
			//Unreachable code 不能到达的代码
			//e.printStackTrace();
		}
	}
}



API的字符串String

java只所以强大,它有两个特点,jdk、平台生态链
1)jdk,java开发者工具包,它提供上万个基础类,方法,能方便调用计算机各个硬件处理
System.out 系统的输出设备(显示器);System.in 系统的输入设备(键盘)
开发效率就高,能实现各自业务需求
API application interface 应用程序接口(插排)。java怎么和计算机硬件通讯
2)平台生态链
JavaSE(jdk)、JavaEE(企业级开发、SSM、SpringCloud微服务)、JavaME(嵌入式)

API提供字符串String

在这里插入图片描述

package cn.tedu.string;

import org.junit.Test;

/*
 * 身号:
 * 1)前6位,地址码
 * 2)中间8位,4年2月2日,生日日期
 * 3)后3位,顺序码,最后一位奇数=男,偶数=女
 * 4)校验位1位
 */
public class TestCardNo {
	@Test  //接收异常,抛出系统
	public void cardNo() throws Exception {
		String cardNo = "610113198009102113";
		//判断长度如果不是18位,抛出异常 throw
		if(cardNo.length()==18) {
			//继续实现业务
			String address = cardNo.substring(0,6);
			System.out.println("地址码:" + address );
			
			String birthday = cardNo.substring(6, 14);
			String year = birthday.substring(0,4);
		    String month = birthday.substring(4,6);
		    String day = birthday.substring(6);
			System.out.println("出生年月:" 
					+ year+"年"+month+"月"+day+"日");
			
			String sn = cardNo.substring(cardNo.length()-2, cardNo.length()-1);
			//怎么把字符串变成整数 api
			int sno = Integer.parseInt(sn);	//把字符串sn转换成sno整数
			if(sno %2==1) {
				System.out.println("性别:男");
			}else {
				System.out.println("性别:女");
			}
			
		}else {
			//抛出异常
			throw new Exception("您输入的身号不正确!");
		}
	}
}









  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值