System.out.println(num[index]);
}
}
}
2.packageshiyan2;
importjava.util.*;
publicclassquestion2{
publicstaticvoidmain(String[]args){
Scannerin=newScanner(System.in);
System.out.println("请输入一个3*3矩阵:
");
intsum=0;
int[][]a=newint[3][3];
for(inti=0;i<3;i++)
{
for(intj=0;j<3;j++)
{
a[i][j]=in.nextInt();
if(i==j)
sum+=a[i][j];
}
System.out.print("\n");
}
System.out.println("对角线和为"+sum);
}
}
3.packageshiyan2;
importjava.util.Scanner;
publicclassquestion3{
publicstaticvoidmain(String[]args){
Scannerinput=newScanner(System.in);
System.out.print("请输入:
");
Stringsentence=input.nextLine();//将输入的句子转化为单词数组
String[]words=sentence.split("");//单词数组的长度就是单词数
System.out.println("共有"+words.length+"个单词.");
}
}
5、运行结果
1.2.3.
六、讨论、心得
在实验过程中的确遇到过很多问题,不像前几章那样较容易实现各功能,比如在做实验一时开始的时候各个计算的相关算法确实不容易想,后来在与同学进行探讨后才勉强实现实验要求,题中的算法还相对比较容易实现.
经过这次实验我发现自己在知识方面还有很多的不足,在平时的练习中也不懂得扩展与举一反三,导致这次的实验做得马马虎虎,除此之外也体会到了面向对象程序设计相对于过程化程序设计的优越性,总之,语言是一门技巧,要想能熟练掌握,必须多加练习。
实验3Java面向对象程序设计
一、实验目的和要求
掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方法、类、成员变量等元素。
二、实验内容和原理
1.创建一个复数类complex,以附属进行数学运算、复数具有如下格式:
RealPart+ImaginaryRart*I,其中,I为-1的平方根。
要求如下:
利用浮点变量表示此类的私有数据。
提供两个构造方法,一个用于此类声明的对象的初始化;一个为默认的无参构造方法。
提供两复数加、减、乘的运算方法。
按格式(a,b)打印复数。
其中a为实部,b为虚部。
2.创建银行账号Account类,实现存款(balance)的存(deposit)、取(withdraw)和查询(getbalance)等功能。
3.编程定义一个接口,实现三个数中求最小值和最大值的方法,并将程序存放在mymaths包中。
4.编程实现以下简单超市管理,具体要求如下:
实现描述超市的类Suppermacket类,具有货架属性,记录系统中现有商品,定义盘点商品的函数check(盘点各类商品的数量,并输出盘点结果),查询商品的函数query,并显示查询结果;
定义商品类Goods,具有商品名称Name,商品价格Price,商品产地Producer等属性,操作Sale(销售商品,余额不足时给予提示)、Add(商品上架操作)和ShowMe(显示商品信息)。
main函数,测试以上所要求的各种功能,即可以根据菜单命令增加、删除、查询商品、盘点商品,以及商品销售和商品上架的操作
提示:
①超市货架可以使用商品数组,数组大小100表明存放100个商品。
②注意实现商品查询的多态性,要求可以根据商品的名称或产地或价格查询商品的数量。
三、主要仪器设备
Eclipe
四、源代码
1.packageshiyan3;
importjava.util.Scanner;
publicclassquestion1{
publicstaticvoidmain(String[]args){
Complexa=newComplex(3,5);
Complexb=newComplex(7,2);
System.out.println(a.toString()+"和"+b.toString()+"相加的结果为"+plexAdd(b).toString());
System.out.println(a.toString()+"差"+b.toString()+"相减的结果为"+plexJian(b).toString());
}
}
classComplex{
intrealPart;
intimaginPart;
publicComplex(){
realPart=0;
imaginPart=0;}
publicComplex(intr,inti){
realPart=r;
imaginPart=i;}
publicComplexcomplexAdd(Complexb){
returnnewComplex(realPart+b.realPart,imaginPart+b.imaginPart);}
publicComplexcomplexJian(Complexb){
returnnewComplex(realPart-b.realPart,imaginPart-b.imaginPart);}
publicStringtoString(){
Stringsr="("+realPart+","+imaginPart+")";
returnsr;}
}
2.packageshiyan3;
importjava.util.Scanner;
publicclassquestion2{
publicstaticvoidmain(String[]args){
doublebalance=0;
doubledeposit=0;
doublewithdraw=0;
for(;;){
System.out.println("请输入数字:
\t1.存钱\t2.取钱\t3.查询余额\n");
Scannerinput=newScanner(System.in);
Stringnum=input.next();
doubles1=0,s2=0;
if(num.equals("1")){
System.out.println("输入存入金额:
");
deposit=input.nextDouble();
System.out.println("存钱数目为:
"+deposit);
s1+=deposit;
}
if(num.equals("2")){
System.out.println("输入取钱金额:
");
withdraw=input.nextDouble();
System.out.println("取走金额为:
"+withdraw);
s2+=withdraw;
}
if(true|num.equals("3")){
balance+=s1-s2;
System.out.println("账户余额为:
"+balance);
}
}
}
}
3.packageshiyan3;
publicclassquestion3{
publicIntegermaxNum(inta,intb){
if(a>b){
returna;
}else{
returnb;
}
}
publicIntegerminNum(inta,intb){
if(a>b){
returnb;
}else{
returna;
}
}
publicstaticvoidmain(String[]args){
inta=6,b=2,c=10;
question3s=newquestion3();
inttemp=s.maxNum(a,b);
inttemp1=s.maxNum(temp,c);
System.out.println("TheMaxNumis"+temp1);
inttemp2=s.minNum(a,b);
inttemp3=s.minNum(temp2,c);
System.out.println("TheMinNumis"+temp3);
}
}
5、运行结果
实验4Java异常处理
一、实验目的和要求
掌握异常的概念,以及如何定义、抛出和捕获处理异常。
二、实验内容和原理
(1)做实验之前要求思考以下问题,作为预习内容;
错误和异常有何区别?
查看Java异常类的关系图。
异常是如何抛出、捕获和处理的?
Java捕获和处理异常的结构式怎样的?
Try语句如何嵌套?
Trow语句有何作用?
Finally程序快的作用是什么?
1.
(1)错误与异常的区别:
错误:
指在程序编译时如果程序进入死循环,或递归无法结束,或内存溢出。
错误只能在编程阶段解决,只能依靠其他程序干预,否则会一直处于非正常状态。
异常:
指运算时除数为0,或操作数超过范围,或打开一个文件时发现文件并不存在,或欲装入的类文件丢失,或网络连接中断等。
(2)java提供了一种利用简单易行的方法检查和处理运行时产生的错误的异常处理机制,它是通过面向对象的方法来处理异常的。
在java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象。
生成的异常对象将
传递给java运行时系统,这一异常的产生和提交过程成为抛弃异常。
当java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。
找到能够处理这类异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获异常。
(3)根据程序对错误与异常的处理方式,可以将java中的异常分为Error类,RuntimeException
类和Exception类。
其中Error类包括的是一些严重的程序不能处理的系统错误类,如内存溢出,虚拟机错误,栈溢出等。
这类错误一般主要与硬件有关,与程序本身无关,通常由系统进行处理,程序本身无需去捕获和处理。
程序运行过程中,可能出现RuntimeException类的异常数量相当大,对于运行时的异常类,如数组越界,算术异常等,应通过程序尽量避免而不是去捕获它。
(4)为了避免程序运行时可能出现的错误,将程序代码放在
try程序块中,紧跟在try语句后面包括一个catch语句,用来指定需要捕获的异常类型。
在程序中发生异常时,程序员可以抛出(throw)一个自定义异常类的实例,将其放到异常列中去,并激活java的异常处理机制。
当抛出一个异常时,程序的执行就不再是线性的,这样就有可能导致方法的执行中断。
在java语言中,使用finally语句来解决此类问题。
Finally语句创建一个代码块,在try/catch语句执行后执行,不管是否抛出一个异常,系统都将执行finally
语句的程序代码。
(2)运行下面的程序,理解异常的抛出、捕获与处理。
Importjava.io.*;
publicclassvoidmain(Stringargs[]){
publicstaticvoidmain(Stringargs[]){
for(inti=0;i<4;i++){
intk;
try{
switch(i){
case0:
//dividedbyzero
intzero=0;
k=911//zero
break;
case1:
//nullpointer
intb[]=null;
k=b[0];
break;
case2;//arrayindexoutofbound
intc[]=newint[2];
k=c[9];
break;
case3:
//stringindexoutofbound
charch="abc".charAt(99);
break;
}
}catch(Exceptione){
System.out.println("\nTestcase#"+i+"\n");
System.out.println(e);
}
}
}
}
(3)在实验三中的超市、商品类中创建一个自定义异常类。
要求:
在定义商品类时,若销售商品数量大于余额则作为异常处理提示:
产生异常条件是某类商品销售数量大于库存额,因此是否抛出异常要先判断该条件。
确定产生异常的方法,应该在sale方法中产生异常InsufficientFundsException。
处理异常安排在调用sale的时候,因此sale方法要声明异常,由上级方法捕获并处理。
要定义好自己的异常。
3.packageshiyan4;
importjava.io.*;
classAccount{
publicStringaccount;
publicdoublebalance=0;
publicAccount(Stringaccount,doublebalance){
this.account=account;
this.balance=balance;
}
publicvoiddeposit(doublemoney){
this.balance+=money;
}
publicdoublegetbalance(){
returnthis.balance;
}
publicdoublewithdrawl(doublemoney)throwsInsufficientFundsException{
if(money>this.balance){
thrownewInsufficientFundsException();
}
this.balance-=money;
}
publicvoidprocess(booleansave,doublemoney){
if(save){
System.out.println("你的余额为:
"+balance)