实验二常用类与异常处理.docx
- 文档编号:27933694
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:19
- 大小:1.95MB
实验二常用类与异常处理.docx
《实验二常用类与异常处理.docx》由会员分享,可在线阅读,更多相关《实验二常用类与异常处理.docx(19页珍藏版)》请在冰豆网上搜索。
实验二常用类与异常处理
甘肃政法学院
本科生实验报告
(二)
姓名:
学院:
专业:
班级:
实验课程名称:
JavaSE程序设计
实验日期:
2014年4月16日
指导教师及职称:
实验成绩:
开课时间:
2014——2015学年第1学期
甘肃政法学院实验管理中心印制
实验题目
常用类与异常处理
小组合作
否
姓名
班级
学号
一、实验目的
1.掌握Java语言的异常处理机制。
2.掌握Java语言中常用的实用类。
3.理解什么是异常。
4.掌握异常处理方法:
抛出异常、捕捉和处理异常。
5.掌握自定义异常类。
6.掌握javaString类的各个常用方法的应用。
7.掌握Date类和Calendar类的各个常用方法的应用。
8.掌握StringTokenizer类的用法。
9.了解正则表达式的用法
10.掌握简单的异常处理流程。
11.内部类的应用
二.实验环境
(1)配置好环境变量的PC计算机
(2)应用Eclipse进行Java代码的编写、调试及运行
三、实验内容与步骤
1、String类的常用方法应用。
classStringExample
{publicstaticvoidmain(Stringargs[])
{Strings1=newString("youareastudent"),
s2=newString("howareyou");
if(s1.equals(s2))//使用equals方法判断s1与s2是否相同
{
System.out.println("s1与s2相同");
}
else
{
System.out.println("s1与s2不相同");
}
Strings3=newString("22030219851022024");
if(s3.startsWith("220302"))//判断s3的前缀是否是“220302”。
{
System.out.println("吉林省的身份证");
}
Strings4=newString("你"),
s5=newString("我");
if(pareTo(s5)>0)//按着字典序s4大于s5的表达式。
{
System.out.println("按字典序s4大于s5");
}
else
{
System.out.println("按字典序s4小于s5");
}
intposition=0;
Stringpath="c:
\\java\\jsp\\A.java";
position=path.lastIndexOf("\\");//获取path中最后出现目录分隔符号的位置
System.out.println("c:
\\java\\jsp\\A.java中最后出现\\的位置:
"+position);
StringfileName=path.substring(12,18);//获取path中“A.java”子字符串。
System.out.println("c:
\\java\\jsp\\A.java中含有的文件名:
"+fileName);
Strings6=newString("100"),
s7=newString("123.678");
intn1=Integer.parseInt(s6);//将s6转化成int型数据。
doublen2=Double.parseDouble(s7);//将s7转化成double型数据。
doublem=n1+n2;
System.out.println(m);
Strings8=String.valueOf(m);//String调用valuOf(intn)方法将m转化为字符串对象
position=s8.indexOf(".");
Stringtemp=s8.substring(position+1);
System.out.println("数字"+m+"有"+temp.length()+"位小数");
Strings9=newString("ABCDEF");
chara[]=s8.toCharArray();//将s8存放到数组a中。
for(inti=a.length-1;i>=0;i--)
{
System.out.print(""+a[i]);
}
}
}
2、Date类和Calendar类的各个常用方法的应用:
比较日期的大小。
packagep.i;
importjava.util.*;
importjavax.swing.JOptionPane;
publicclassDateExample
{
publicstaticvoidmain(Stringargs[])
{
Stringstr=JOptionPane.showInputDialog("输入第一个日期的年份:
");
intyearOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该年的月份:
");
intmonthOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该月份的日期:
");
intdayOne=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入第二个日期的年份:
");
intyearTwo=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该年的月份:
");
intmonthTwo=Integer.parseInt(str);
str=JOptionPane.showInputDialog("输入该月份的日期:
");
intdayTwo=Integer.parseInt(str);
Calendarcalendar=Calendar.getInstance();//初始化日历对象
calendar.set(yearOne,monthOne,dayOne);//将calendar的时间设置为yearOne年monthOne月dayOne日
longtimeOne=calendar.getTimeInMillis();//calendar表示的时间转换成毫秒
calendar.set(yearTwo,monthTwo,dayTwo);//将calendar的时间设置为yearTwo年monthTwo月dayTwo日
longtimeTwo=calendar.getTimeInMillis();//calendar表示的时间转换成毫秒。
Datedate1=newDate(timeOne/(1000*60*60*24));//用timeOne做参数构造date1
Datedate2=newDate(timeTwo/(1000*60*60*24));//用timeTwo做参数构造date2
if(date2.equals(date1))
{
System.out.println("两个日期的年、月、日完全相同");
}
elseif(date2.after(date1))
{
System.out.println("您输入的第二个日期大于第一个日期");
}
elseif(date2.before(date1))
{
System.out.println("您输入的第二个日期小于第一个日期");
}
longdays=(timeOne-timeTwo)/(1000*60*60*24);//计算两个日期相隔天数
System.out.println(yearOne+"年"+monthOne+"月"+dayOne+"日和"
+yearTwo+"年"+monthTwo+"月"+dayTwo+"相隔"+days+"天");
}
}
3、处理大整数
packagej.u;
//BigintegerExample
importjava.math.*;
classBigIntegerExample
{
publicstaticvoidmain(Stringargs[])
{BigIntegern1=newBigInteger("987654321987654321987654321"),
n2=newBigInteger("123456789123456789123456789"),
result=null;
result=n1.add(n2);//n1和n2做加法运算
System.out.println("和:
"+result.toString());
result=n1.subtract(n2);//n1和n2做减法运算
System.out.println("差:
"+result.toString());
result=n1.multiply(n2);//n1和n2做乘法运算
System.out.println("积:
"+result.toString());
result=n1.divide(n2);//n1和n2做除法运算
System.out.println("商:
"+result.toString());
BigIntegerm=newBigInteger("1968957"),
COUNT=newBigInteger("0"),
ONE=newBigInteger("1"),
TWO=newBigInteger("2");
System.out.println(m.toString()+"的因子有:
");
for(BigIntegeri=TWO;pareTo(m)<0;i=i.add(ONE))
{if((n1.remainder(i).compareTo(BigInteger.ZERO))==0)
{COUNT=COUNT.add(ONE);
System.out.print(""+i.toString());
}
}
System.out.println("");
System.out.println(m.toString()+"一共有"+COUNT.toString()+"个因子");
}
}
4、红牛农场
packagew.m;
//RedCowForm.java
publicclassRedCowForm{
StringformName;
RedCowcow;//用内部类RedCow声明对象cow
RedCowForm(){
}
RedCowForm(Strings){
cow=newRedCow(150,130,4500);//创建cow
formName=s;
}
publicvoidshowCowMess(){
cow.speak();
}
classRedCow{//内部类的声明
StringcowName="红牛";
intheight,weight,price;
RedCow(inth,intw,intp){
height=h;
weight=w;
price=p;
}
voidspeak(){
System.out.println(cowName+",身高:
"+height+"cm体重:
"+weight+"kg");
System.out.println("生活在"+formName);
}
}
}
packagew.m;
//MainClass.java
publicclassMainClass{
publicstaticvoidmain(Stringargs[]){
RedCowFormform=newRedCowForm("红牛农场");
form.showCowMess();
}
}
5、检查危险品
packagee.d;
//Check.java
publicclassCheck{
publicstaticvoidmain(Stringargs[]){
Machinemachine=newMachine();
Stringname[]={"苹果","炸药","西服","硫酸","手表","硫磺"};
Goods[]goods=newGoods[name.length];//检查6件物品
for(inti=0;i goods[i]=newGoods(); if(i%2==0){ goods[i].setIsDanger(false); goods[i].setName(name[i]); } else{ goods[i].setIsDanger(true); goods[i].setName(name[i]); } } for(inti=0;i try{machine.checkBag(goods[i]); System.out.println(goods[i].getName()+"检查通过"); } catch(DangerExceptione){ e.toShow();//e调用toShow()方法 System.out.println(goods[i].getName()+"被禁止! "); } } } } packagee.d; //DangerException.java classDangerExceptionextendsException{ Stringmessage; publicDangerException(){ message="危险品! "; } publicvoidtoShow(){ System.out.print(message+""); } } packagee.d; //Goods.java classGoods{ booleanisDanger; Stringname; publicvoidsetIsDanger(booleanboo){ isDanger=boo; } publicbooleanisDanger(){ returnisDanger; } publicvoidsetName(Strings){ name=s; } publicStringgetName(){ returnname; } } packagee.d; //Machine.java classMachine{ booleanisDanger; Stringname; publicvoidsetIsDanger(booleanboo){ isDanger=boo; } publicvoidcheckBag(Goodsgoods)throwsDangerException{ if(goods.isDanger()==true) thrownewDangerException(); } } 6、StringTokenizer的应用 packager.o; //FoundPrice.java importjava.util.*; publicclassFoundPrice{ publicstaticvoidmain(Stringargs[]){ Strings="牛奶: 89.8元,香肠: 12.9元啤酒: 69元巧克力: 132元"; Stringregex="[^0123456789.]";//匹配非数字的正则表达识 StringdigitMess=s.replaceAll(regex,"*"); StringTokenizerfenxi=newStringTokenizer(digitMess);//创建fenxi,用*做分隔标记解析digitMess中的单词 intnumber=fenxi.countTokens();//fenxi调用countTokens()方法返回单词数量 doublesum=0; while(fenxi.hasMoreTokens()){ Stringstr=fenxi.nextToken();//fenxi调用nextToken()方法返回单词 System.out.println(str); sum=sum+Double.parseDouble(str); } System.out.println("购物小票中的商品种类: "+number+"种"); System.out.println("购物小票中的价格总额: "+sum+"元"); } } 7、正则表达式的应用 packagei.p; importjava.util.regex.*; publicclassReplaceIP{ publicstaticvoidmain(Stringargs[]){ Stringstr="登录网站: 222.128.89.253"; Patternpattern; Matchermatcher; Stringregex="[\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}"; pattern=Ppile(regex);//使用regex初试化模式对象pattern matcher=pattern.matcher(str);//得到检索str的匹配对象matcher StringIP=""; while(matcher.find()){ IP=matcher.group(); System.out.print(matcher.start()+"位置出现: "); System.out.println(IP); } System.out.printf("将%s替换为202.192.78.56\n",IP); Stringresult=matcher.replaceAll("202.192.78.56"); System.out.println(result); } } 四、实验过程与分析 实验的运行结果如下: 1. 2. 3. 4. 5. 6. 7. 五、实验总结 1.Java语言也需要多写多练,在错误中不断丰富自己的经验,在不断的练习下,不仅可以熟悉Java程序,也能很好的去尝试编写自己的Java程序。 2.在本次实验中,确实或多或少也遇到了一些问题,有的自己能独立解决,但是有的在自己有限的能力范围内,还是没有很好的解决,例如第6小题的实验,结果是这样的: 3.这次实验中的Java常用类方法确实给我们记忆上带来了一定的难度,因为非常多也非常灵活,在一定程度上也难,咨询过老师后,老师给的建议是多参考JDK帮助文档,现在发现这个方法也确实挺有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 常用 异常 处理