map
package com.neuedu.day10;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;
import org.junit.Test;
map exception
package com.neuedu.day10;
public class Position {
//纬度
private double lat;
// 经度
private double lon;
public Position(double lat, double lon) {
super();
this.lat = lat;
this.lon = lon;
}
public double getLat() {
return lat;
}
public void setLat(double lat) {
this.lat = lat;
}
public double getLon() {
return lon;
}
public void setLon(double lon) {
this.lon = lon;
}
public Position() {
super();
}
}
public class Mappp {
/*
* 1.Map<key,value>
*
*/
@Test
public void myTest01() {
Map<String, Position> map = new HashMap();
Position p1 = new Position(41.48, 123.02);
Position p2 = new Position(41.52, 123.58);
// put方法是向map里放如果key相同覆盖
map.put("18642047789", p1);
map.put("15084106996", p2);
// get(key)根据key查询对象
Position p1_get = map.get("18642047789");
// size()获取大小
int len = map.size();
System.out.println(p1_get.getLat());
System.out.println(p1_get.getLon());
// containskey containsValue 判断有没有
if (map.containsKey("19304001139")) {
System.out.println("有");
} else {
System.out.println("没有");
}
// 了解
if (map.containsValue(p1)) {
System.out.println("有");
} else {
System.out.println("没有");
}
// remove方法是移除
map.remove("15084106996");
System.out.println(map);
}
map的遍历
@Test
public void myTest02() {
Map<String, Position> map = new HashMap();
Position p1 = new Position(41.48, 123.02);
Position p2 = new Position(41.52, 123.58);
// put方法是向map里放如果key相同覆盖
map.put("18642047789", p1);
map.put("15084106996", p2);
// 获取所有的key
Set<String> keys = map.keySet();
// 循环key,逐个获得value
for (String key : keys) {
System.out.println(key);
Position p = map.get(key);
System.out.println("取出的位置" + p.getLat() + " " + p.getLon());
System.out.println("-----------");
}
}
@Test
public void myTest03() {
Map<String, Position> map = new HashMap();
Position p1 = new Position(41.48, 123.02);
Position p2 = new Position(41.52, 123.58);
// put方法是向map里放如果key相同覆盖
map.put("18642047789", p1);
map.put("15084106996", p2);
// entrySet
Set<Entry<String, Position>> entrys = map.entrySet();
for (Entry<String, Position> entry : entrys) {
System.out.println(entry.getKey());
Position p = entry.getValue();
System.out.println("取出的位置" + p.getLat() + " " + p.getLon());
System.out.println("-----------");
}
}
编写一个程序,创建一个HashMap对象
用于存储银行储户的信息(其中储户的主要信息是id 姓名 余额)
另外,计算并显示其中某个储户的当前余额
package com.neuedu.day10;
public class Depositor {
private String name;
private double balance;
public Depositor() {
super();
}
public Depositor(String name, double balance) {
super();
this.name = name;
this.balance = balance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
@Test
public void myTest04() {
Map<String, Depositor> map = new HashMap();
Depositor d1 = new Depositor("运1", 5512.24);
Depositor d2 = new Depositor("运2", 552.12);
Depositor d3 = new Depositor("运3", 5582.24);
Depositor d4 = new Depositor("运4", 6412.24);
map.put("123", d1);
map.put("124", d2);
map.put("125", d3);
map.put("126", d4);
Set<String> keys = map.keySet();
for (String key : keys) {
Depositor d = map.get(key);
System.out.println(d.getBalance());
}
}
@Test
public void myTest05() {
Map<String, Depositor> map = new HashMap();
Depositor d1 = new Depositor("运1", 5512.24);
Depositor d2 = new Depositor("运2", 552.12);
Depositor d3 = new Depositor("运3", 5582.24);
Depositor d4 = new Depositor("运1", 6412.24);
map.put("123", d1);
map.put("124", d2);
map.put("125", d3);
map.put("126", d4);
Scanner sc = new Scanner(System.in);
String s = sc.next();
double sum = 0;
Set<String> keys = map.keySet();
for (String key : keys) {
Depositor d = map.get(key);
if (d.getName().equals(s)) {
sum = sum + d.getBalance();
}
}
System.out.println(sum);
}
异常处理
package com.neuedu.day10;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
//异常处理
public class TestException {
@Test
public Date stringToDate(String str) {
Date now = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
now = sdf.parse(str);
} catch (ParseException e) {
System.out.println("日期格式错误");
e.printStackTrace();
}
return now;
}
@Test
public Date stringToDate2(String str) throws ParseException {
Date now = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
now = sdf.parse(str);
return now;
}
}
@Test
public void myTest06() {
TestException te = new TestException();
Date d = te.stringToDate("2020-08-18");
try {
Date d2 = te.stringToDate2("20200818");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("日期格式异常");
}
}
分别处理时,小的异常放内层,越大的往外放
@Test
public void myTest07() {
// try{}final{}
// try{}catch{}final{}
FileInputStream file = null;
try {
// 打开文件
file = new FileInputStream("E;/java11/javase/test1.tst");
// 可以执行其他操作
} catch (FileNotFoundException e) {
System.out.println("文件不存在");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// System.exit;系统退出,这个时候finally执行不到
e.printStackTrace();
}
// 关闭文件
finally {// 无论如何都会被执行,经常用来作为后续清理工作,关闭流关闭数据连接.清除内存中的某些东西
try {
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void myTest08() {
// try{}final{}
// try{}catch{}final{}
FileInputStream file = null;
try {
// 打开文件
file = new FileInputStream("E;/java11/javase/test1.tst");
// 可以执行其他操作
int i = 1 / 0;
} catch (FileNotFoundException e) {
System.out.println("出现");
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
// System.exit;系统退出,这个时候finally执行不到
e.printStackTrace();
}
// 关闭文件
finally {// 无论如何都会被执行,经常用来作为后续清理工作,关闭流关闭数据连接.清除内存中的某些东西
try {
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
作业
创建类Student,属性有平时成绩,期末成绩; 方法有计算总成绩的方法getScore(), (用平时成绩加上期末成绩的1/2,来计算总成绩);
在上面的方法中,在方法头声明异常Exception, 如果总成绩小于60分,则抛出异常Exception。创建测试类,
实例化Student对象,给平时成绩和期末成绩赋值, 然后调用getScore()方法来计算总成绩,注意异常的捕获。
package com.neuedu.day10;
import java.util.Scanner;
import org.junit.Test;
import com.neuedu.day10.homework.Accoun;
import com.neuedu.day10.homework.Student;
public class HomeWork {
package com.neuedu.day10.homework;
import com.neuedu.day10.BNEException;
public class Student {
private double peacetimescore;
private double endscore;
private double sumscore;
public Student() {
super();
}
public double getPeacetimescore() {
return peacetimescore;
}
public void setPeacetimescore(double peacetimescore) {
this.peacetimescore = peacetimescore;
}
public double getEndscore() {
return endscore;
}
public void setEndscore(double endscore) {
this.endscore = endscore;
}
public Student(double peacetimescore, double endscore) {
super();
this.peacetimescore = peacetimescore;
this.endscore = endscore;
}
public double getScore () throws Exception
{
this.sumscore=this.peacetimescore+this.endscore;
if(this.sumscore>=60) {
return this.sumscore;}
else
{
throw new Exception("分数异常");
}
}
}
@Test
public void myTest01() {
Student s = new Student(1, 21);
try {
System.out.println(s.getScore());
} catch (Exception e) {
e.printStackTrace();
}
}
自定义异常类BNEException。 编写帐户类Account,属性包括帐号和余额;
方法包括存钱方法save(doubled),增加收入后,打印输出余额; 取钱方法pay(double d),减少收入后,打印输出余额,当余额小于0时,
抛出余额不足的异常BNEException。编写测试类,创建Account的对象, 并且调用该对象的save和pay方法。
package com.neuedu.day10.homework;
public class Accoun {
private String id;
private double money;
public Accoun() {
super();
}
public Accoun(String id, double money) {
super();
this.id = id;
this.money = money;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double save(double d) {
this.money = this.money + d;
return this.money;
}
public double pay(double d) throws BNEException {
double yue;
yue = this.money - d;
if (yue > 0) {
return yue;
} else {
throw new BNEException("余额异常");
}
}
}
package com.neuedu.day10.homework;
public class BNEException extends Exception {
public BNEException() {
super();
}
public BNEException(String message) {
super(message);
}
}
@Test
public void myTest02() throws BNEException {
Accoun a = new Accoun("运1", 5000);
a.save(4000);
try {
a.pay(12000);
} catch (com.neuedu.day10.homework.BNEException e) {
e.printStackTrace();
}
}
编写应用程序,从命令行传入两个整型数作为除数和被除数。 要求程序中捕获NumberFormatException异常和
ArithmeticException 异常,而且无论在哪种情况下, “总是被执行”这句话都会在控制台输出。
@Test
public void myTest03() {
Scanner sc = new Scanner(System.in);
String string1 = sc.next();
String string2 = sc.next();
try {
int c1 = Integer.parseInt(string1);
int c2 = Integer.parseInt(string2);
System.out.println(c1 / c2);
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (ArithmeticException e) {
e.printStackTrace();
} finally {
System.out.println("总是被执行");
}
}
}