int i=Integer.parseInt(s);//NumberFormatException
Object ojb1="123";
Easy e=(Easy)obj1;//ClassCastException
TreeSet set=new TreeSet();
set.add("123");
set.add(12.2);//ClassCastException
String str="123";
str.substring(4);//ArrayIndexOutOfBoundsException
int[] arr={};
arr[0]=12;ArrayIndexOutOfBoundsException
List list =new ArrayList();
list.get(1);//java.lang.IndexOutOfBoundsException
Object obj=null;
obj.toString();//java.lang.NullPointerException
int a=12/0;//java.lang.ArithmeticException
double b=12/0.0;
2.异常知识点 //在程序运行过程中才会抛出的异常叫做运行时异常
//在编码过程中必须处理的异常叫做检查性异常
//java程序访问外部资源一般都会抛出检查性异常
//程序抛出了异常就会终止
//处理异常的一种方式:try{}catch(){}finally{}
//try将正常的代码尝试运行
//catch如果抛出了指定类型的异常,执行的方案
//finally不管是否抛出了异常都会执行的代码
File file;
FileInputStream fis;
try {
file=new File("D:\locla\test.java");
fis=new FileInputStream(file); //FileNotFoundException
}
catch(FileNotFoundException e) {
//try块抛出异常后,处理的预备方案
file=null;
fis=null;
e.printStackTrace();//打印异常信息
}catch(NullPointerException e){
//多个catch块只会运行一个
}catch(StringIndexOutOfBoundsException|ArrayIndexOutOfBoundsException e) {
//一个catch声明捕捉多种异常
}catch(Exception e) {
//范围大的异常的catch块放在后面
}
finally {
if(fis!=null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//抛出异常
//一个方法中可能会抛出异常,使用throws声明抛出的异常类型
//所有的RuntimeException的子类都是运行时异常
//Exception下除了RuntimeException之外所有的都是检查性异常
public void put(Object k,Object v) throws NullPointerException{
if(k==null) {
throw new NullPointerException("Key is null");
}
}
public void openFile(java.io.File file) throws FileNotFoundException,ClassNotFoundException{
if(file==null) {
throw new FileNotFoundException("file not found");
}
Class.forName("java.util.Math");
public void checkPrice(double price) throws PriceOutOfBoundsException{
if(price<0||price>=100000) {
throw new PriceOutOfBoundsException("price of"+price);
}
}
//一个方法中抛出运行时异常,不需要明文定义
public void checkGrade(double grade) {
if(grade<0||grade>=100) {
throw new GradeOutOfBoundsException();
}
}
class GradeOutOfBoundsException extends RuntimeException{
public GradeOutOfBoundsException() {
super();
}
}
class PriceOutOfBoundsException extends Exception{
public PriceOutOfBoundsException() {
super();
}
}
class A{
public void test() throws NullPointerException{}
}
class B extends A{
//重写的方法只能抛出范围更小的异常
//不能抛出更多个异常 异常类型要不一样
public void test() throws Exception{}
public void test() throws PriceOutOfBoundsException{}
} 3.return补充点 //一个方法执行多次return
//最后一次return才是生效的
public static void main(String[] args) {
String result=test();
System.out.println(result);//over
}
public static String test() {
try {
int i=12/0;
return "ok";
}catch(Exception e) {
return "catch";
}finally {
return "over";
}
}
}
// 生成彩球类
// 红球:1-33
// 蓝球1-15
// 在定义一个彩票站,使用泛型
// 定义摇号的方法,随机产生6红球,一个蓝球,将要出的球放到集合中(红红不可重复)
// 提供toString方法返回红球:........,蓝球. 方法1:
package com.easy16;
import java.util.ArrayList;
import java.util.List;
public class Easy {
public static void main(String[] args) {
Station s1=new Station();
ArrayList a1=new ArrayList(s1.lottery());
String s2=s1.toString(a1);
System.out.println(s2);
}
}
class Station {
String toString(List list) {
StringBuilder strb=new StringBuilder();
for(Ball ball:list) {
if(ball.getColor().equals("红色")&&strb.indexOf("红球")==-1) {
strb.append("红球:");
}
strb.append(ball.getNumber());
strb.append(",");
if(ball.getColor().equals("蓝色")) {
//截取字符串
strb=new StringBuilder(strb.substring(0, strb.length()-1));
strb.append("蓝球:");
strb.append(ball.getNumber());
}
}
return strb.toString();
}
List lottery() {
// 声明存储球的容器
List list = new ArrayList();
// 红球
int number;
Ball ball;
while (true) {
number = (int) (Math.random() * Ball.RED_MAX_VALUE + Ball.RED_MIN_VALUE);
// 抽出来的球
ball = new Ball("红色", number);
System.out.println(ball);
// 如果球重复了就要重新抽
if (list.contains(ball)) {
continue;
}
list.add((E) ball);
if (list.size() == 6) {
break;
}
}
number = (int) (Math.random() * Ball.BLUE_MAX_VALUE + Ball.BLUE_MIN_VALUE);
ball = new Ball("蓝色", number);
list.add((E) ball);
System.out.println(ball);
return list;
}
}
class Ball {
// 声明每种球的最大值最小值
public static final int RED_MAX_VALUE = 33;
public static final int RED_MIN_VALUE = 1;
public static final int BLUE_MAX_VALUE = 15;
public static final int BLUE_MIN_VALUE = 1;
// 声明属性
private String color;
private int number;
public Ball(String color, int number) {
super();
this.color = color;
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String toString() {
return "Ball [color=" + color + ", number=" + number + "]";
}
public boolean equals(Object obj) {
// 比较球--颜色一样,号码一样,就是一个球
if (this == obj) {
return true;
}
if (obj instanceof Ball) {
Ball item = (Ball) obj;
if (this.number == item.number && this.color.equals(item.color)) {
return true;
}
}
return false;
}
}
方法2:
//彩票站方法2
// 双色球
// 生成彩球类
// 红球:1-33
// 蓝球1-15
// 在定义一个彩票站,使用泛型
// 定义摇号的方法,随机产生6红球,一个蓝球,将要出的球放到集合中(红红不可重复)
// 提供toString方法返回红球:........,蓝球.
package com.easy14;
import java.util.ArrayList;
import java.util.List;
public class Easy {
public static void main(String[] args) {
Station sta = new Station();
List list = sta.lottery2();
String str=sta.toString(list);
System.out.println(str);
}
}
class Station {
String toString(List list) {
StringBuilder strb=new StringBuilder();
for(Ball ball:list) {
if(ball.getColor().equals("红色")&&strb.indexOf("红球")==-1) {
strb.append("红球:");
}
strb.append(ball.getNumber());
strb.append(",");
if(ball.getColor().equals("蓝色")) {
//截取字符串
strb=new StringBuilder(strb.substring(0, strb.length()-1));
strb.append("蓝球:");
strb.append(ball.getNumber());
}
}
return strb.toString();
}
List lottery2(){
List list = new ArrayList();
List redNumArr=new ArrayList();
for(int num:Ball.RED_NUMBER) {
redNumArr.add(num);
}
List blueNumArr=new ArrayList();
for(int num:Ball.BLUE_NUMBER) {
blueNumArr.add(num);
}
int index;
int number;
Ball ball;
for(int i=0;i<6;i++) {
index=(int)(Math.random()*redNumArr.size());
number=redNumArr.remove(index);
// 抽出来的球
ball = new Ball("红色", number);
list.add((E)ball);
}
index=(int)(Math.random()*blueNumArr.size());
number=redNumArr.remove(index);
ball = new Ball("蓝色", number);
list.add((E)ball);
return list;
}
}
class Ball {
public static final int[] RED_NUMBER = { 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 };
public static final int[] BLUE_NUMBER = { 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15 };
// 声明属性
private String color;
private int number;
public Ball(String color, int number) {
super();
this.color = color;
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String toString() {
return "Ball [color=" + color + ", number=" + number + "]";
}
public boolean equals(Object obj) {
// 比较球--颜色一样,号码一样,就是一个球
if (this == obj) {
return true;
}
if (obj instanceof Ball) {
Ball item = (Ball) obj;
if (this.number == item.number && this.color.equals(item.color)) {
return true;
}
}
return false;
}
}



