实验报告□实践报告□课程名称:Java语言程序设计实验、实践名称:Java语言基础、数组和字符串编程、Java面向对象程序设计、Java异常处理多线程编程、图形用户界面编程实验、实践地点:致向楼301专业班级:软件1531学号:***********************2017年1月8日实验一Java语言基础
一、实验目的和要求
(1)通过实验,掌握Java语言程序设计的基本方法。
(2)学会Java语言中标示符的命名、运算符和表达式的应用。
(3)熟练地掌握Java程序流程控制语句的应用。
二、实验内容1.编写应用程序,计算100(含100)以内所有偶数的和。2.“水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。编写程序,求所有的水仙花数。
3.编写一个程序,求1-100间的素数。4.有一函数:x(x<1)Y=3x-2(1≤x<10)4x(x≥10)写一程序,给定x值,输出y值。5.使用for循环语句,编写程序输出以下图案。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆6.编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一行。判断年是否为闰年的条件是:①若年号可以被4整除,而不能被100整除,则是闰年;②若年号可以被400整除,也是闰年。
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码1.publicclassa1{publicstaticvoidmain(String[]args){inti,sum=0;for(i=0;i<=100;i++){if(i%2==0)sum+=i;}System.out.println(sum);}}2.publicclassa2{publicstaticvoidmain(String[]args){inti,a,b,c;for(i=100;i<=999;i++){a=i%10;b=(i-a)%100/10;c=(i-b*10-a)/100;if(i==a*a*a+b*b*b+c*c*c){System.out.println(i);}}}}3.publicclassa3{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubfor(inti=2;i<=100;i++){booleant=false;for(intj=2;j<i;j++){if(i%j==0){t=false;break;}else{t=true;}}if(t)System.out.print(i+"");}}}4.publicclassa4{publicstaticvoidmain(String[]args){inti,j;for(i=1;i<=4;i++){for(j=1;j<=((-1)*i+4);j++)System.out.print("");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}for(i=3;i>=1;i--){for(j=1;j<=((-1)*i+4);j++)System.out.print("");for(j=1;j<=(2*i-1);j++)System.out.print("☆");System.out.println();}}}5.importjava.util.*;publicclassa5{publicstaticvoidmain(String[]args){Scannerx=newScanner(System.in);System.out.println("请输入一个大于1的整数");inti=x.nextInt();System.out.println("你刚才输入的数为"+i);if(i<1)System.out.print("输出结果为"+i);elseif(i>=1&&i<10)System.out.print("输出结果为"+(i*3-2));elseSystem.out.print("输出结果为"+i*4);x.close();}}6.packageshiyan;publicclassa6{publicstaticvoidmain(String[]args){inti,j=0;for(i=1900;i<=2100;i++){if((i%4==0)&&(i%100!=0)||(i%400==0)){j++;if(j%5==0)System.out.println(i);else{System.out.print(i);System.out.print("");}}}}}
五、实验结果1.2.3.4.5.6.
六、讨论、心得初步掌握了Eclipse集成开发环境。
掌握Java基本数据类型、运算符与表达式、数组的使用方法,语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。、对JAVA程序设计有初步的了解实验二数组和字符串编程
一、实验目的和要求
(1)通过实验,掌握Java语言中数组、字符串程序设计的基本方法。
(2)较熟练地掌握Java程序数组的应用、字符串处理操作的方法应用。
二、实验内容
(1)编写一个程序,在控制台输入10个数,按大小顺序输出。
(2)求一个3*3矩阵对角元素之和。
(3)输入一段字符串,统计其中有多少个单词。
(单词用空格隔开)
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码
1、packagea1;importjava.io.*;importjava.util.Scanner;publicclassa1{publicstaticvoidmain(String[]args)throwsIOException{intcount=10,k;doubledata[]=newdouble[count];Scannersr=newScanner(System.in);System.out.print("请输入十个数字:\n");for(k=0;k<count;k++){data[k]=sr.nextDouble();}sr.close();System.out.println("你输入的十个数字是:");for(k=0;k<count;k++)System.out.print(""+data[k]);double[]dataCopy=newdouble[count+1];doubletemp=0;System.arraycopy(data,0,dataCopy,1,data.length);for(k=1;k<count;k++)for(intj=1;j<=count-k;j++){if(dataCopy[j]>dataCopy[j+1]){temp=dataCopy[j];dataCopy[j]=dataCopy[j+1];dataCopy[j+1]=temp;}}System.out.println();System.out.println("从小到大排序后的序列是:");for(intj=1;j<dataCopy.length;j++){System.out.print(""+dataCopy[j]);}}}
2、packagea1;importjava.io.*;importjava.util.Scanner;publicclassa2{publicstaticvoidmain(String[]args)throwsIOException{doublea[][];intsum=0;a=newdouble[3][3];Scannersr=newScanner(System.in);System.out.println("请按行优先输入一个3*3的矩阵:");for(inti=0;i<3;i++)for(intj=0;j<3;j++){a[i][j]=sr.nextDouble();}sr.close();System.out.print("你输入的3*3的矩阵是:");for(inti=0;i<3;i++){System.out.println();for(intj=0;j<3;j++){System.out.print(""+a[i][j]+"\t");if(i==j)sum+=a[i][j];}}System.out.println();System.out.println("对角线元素之和为"+sum);}}
3、packagea1;importjava.util.*;publicclassa3{publicstaticvoidmain(String[]args){System.out.println("请输入英语单词并用空格隔开:");Scannersr=newScanner(System.in);Stringword=newString();word=sr.nextLine();String[]words=word.split("");intnum=words.length;System.out.println("字符串的单词数为"+num);sr.close();}}
五、实验结果1..2.3.
六、实验心得通过本次实验掌握数组的声明、分配空间及初始化;理解多维数组(重点掌握二维);掌握String类的特点及常用方法的使用;掌握StringBuffer类的特点及常用方法的使用;掌握String类和StringBuffer类的区别;掌握equal方法与==的区别;但是本次练习中,我也出现了一些错误,是由于知识上的失误和不小心犯下的低级错误,但是我努力改正。实验三Java面向对象程序设计
一、实验目的和要求掌握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个商品。
②注意实现商品查询的多态性,要求可以根据商品的名称或产地或价格查询商品的数量。
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码1.packagea1;publicclassComplex{floatRealPart;floatImaginaryRart;publicComplex(){}publicComplex(floatR,floatI){RealPart=R;ImaginaryRart=I;}publicstaticComplexadd(Complexa,Complexb){Complexc=newComplex();c.RealPart=a.RealPart+b.RealPart;c.ImaginaryRart=a.ImaginaryRart+b.ImaginaryRart;returnc;}publicComplexminus(Complexa,Complexb){Complexc=newComplex();c.RealPart=a.RealPart-b.RealPart;c.ImaginaryRart=a.ImaginaryRart-b.ImaginaryRart;returnc;}publicComplexmultiply(Complexa,Complexb){Complexc=newComplex();c.RealPart=a.RealPart*b.RealPart-a.ImaginaryRart*b.ImaginaryRart;c.ImaginaryRart=a.RealPart*b.ImaginaryRart+a.ImaginaryRart*b.RealPart;;returnc;}publicvoidprint(){System.out.println("("+this.RealPart+","+this.ImaginaryRart+")");}publicstaticvoidmain(String[]args){Complexa=newComplex(1f,3f);Complexb=newComplex(3f,4f);Complexc=newComplex();c=add(a,b);c.print();}}2.packageshiyan;importjava.util.*;classAccount{privatedoublebalance;Account(){balance=5000;}publicvoiddeposit(doublen){balance=balance+n;System.out.println("存款成功!");}publicvoidwithdraw(doublen){balance=balance-n;System.out.println("取款成功!");}publicvoidgetbalance(){System.out.println("当前账户余额为"+balance);}publicstaticvoidmain(String[]args){Accountc=newAccount();c.getbalance();System.out.println("请输入存款金额:");Scannersc=newScanner(System.in);doublei=sc.nextDouble();c.deposit(i);c.getbalance();System.out.println("请输入取款金额:");doublex=sc.nextDouble();c.withdraw(x);c.getbalance();sc.close();}}3.packagemymaths;publicinterfaceMyinterface{intmax(inta,intb,intc);intmin(inta,intb,intc);}classZzrimplementsMyinterface{publicintmax(inta,intb,intc){inttemp;if(a<b)temp=b;elsetemp=a;if(temp>c)returntemp;elsereturnc;}publicintmin(inta,intb,intc){inttemp;if(a<b)temp=a;elsetemp=b;if(temp>c)returnc;elsereturntemp;}}packagemymaths;publicclassinterfaceTest{publicstaticvoidmain(String[]args){intx,y;Zzrc=newZzr();x=c.min(3,5,8);y=c.max(6,8,9);System.out.println("最小值为"+x+",最大值为"+y);}}4.packagea1;classBase{publicstaticGoods[]All=newGoods[2];//?publicStringname;publicdoubleprice;publicStringproducer;publicintid,num;publicvoidshowMe(){System.out.println("**************"+name+"*************");System.out.println("商品名称:"+name);System.out.println("商品编号:"+id);System.out.println("商品价格:"+price);System.out.println("生产地"+producer);System.out.println("数量"+num);System.out.println("**************"+"end"+"*************");}publicvoidshowNum(){System.out.println("************showNum***********");System.out.println("商品名称:"+name);System.out.println("商品id"+id);System.out.println("数量:"+num);}}classGoodsextendsBase{publicvoidsale(intn,doublepay)throwsExc{if(n>this.num){thrownewExc();}System.out.println("商品名称"+name);System.out.println("商品价格:"+n+"*"+price+"="+n*price);System.out.println("您缴费"+pay);doublemoney=pay-n*price;if(money<0){System.out.println("余额不足,您还需要缴费"+(-money));}else{System.out.println("购买成功");System.out.println("找您"+money);this.num-=n;}}publicvoidadd(Stringname,intid,doubleprice,Stringproducer,intnum){this.name=name;this.price=price;this.producer=producer;this.id=id;this.num+=num;System.out.println("商品上架成功,以下为该商品的基本信息:");this.showMe();All[id]=this;}}publicclassSupermarketextendsBase{publicvoidquery(intid){All[id].showMe();//why?}publicvoidquery(Stringname){for(Goodsg:All){if(g.name==name){g.showMe();}}}publicvoidcheak(){for(Goodsg:All){g.showNum();}}publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubGoodssofa=newGoods();sofa.add("sofa",0,1000,"太原",20);Goodsphone=newGoods();phone.add("phone",1,16,"太原理工",30);try{sofa.sale(100,3000);}catch(Exce){System.out.println(e.getMessage());System.out.println("请稍等,商品正在入库");}Supermarkets=newSupermarket();s.cheak();s.query
(1);s.query
(0);sofa.add("sofa",0,1000,"太原",1);s.query("phone");}}classExcextendsException{Exc(){super("商品库存不足!");}}
五、实验结果1.2.3.4.
六、讨论、心得本次实验让我了解到想用程序解决实际问题时,最好写出三种代码:伪代码、产品代码、测试代码,这样才能快速的写出代码,并且实用性强。希望以后能通过实验了解更多运用java解决实际问题的方法,学好Java。
实验四Java异常处理
一、实验目的和要求掌握异常的概念,以及如何定义、抛出和捕获处理异常。
二、实验内容1.做实验之前要求思考以下问题,作为预习内容;①错误和异常有何区别?查看Java异常类的关系图。②异常是如何抛出、捕获和处理的?③Java捕获和处理异常的结构式怎样的?④Try语句如何嵌套?Trow语句有何作用?Finally程序快的作用是什么?2.运行下面的程序,理解异常的抛出、捕获与处理。
Importjava.io.*;publicclassvoidmain(Stringargs[]){publicstaicvoidmain(Stringargs[]){for(inti=0;i<4;i++){intk;try{switch(i){case0://dividedbyzerointzero=0;k=911//zerobreak;case1://nullpointerintb[]=null;k=b[0];break;case2;//arrayindexoutofboundintc[]=newint[2];k=c[9];break;case3://stringindexoutofboundcharch="abc".charAt
(99);break;}}catch(Exceptione){System.out.println("\nTestcase#"+i+"\n");System.out.println(e);}}}}3.在实验三中的超市、商品类中创建一个自定义异常类。要求:在定义商品类时,若销售商品数量大于余额则作为异常处理(InsufficientFundsException)。提示:①产生异常条件是某类商品销售数量大于库存额,因此是否抛出异常要先判断该条件。
②确定产生异常的方法,应该在sale方法中产生异常InsufficientFundsException。③处理异常安排在调用sale的时候,因此sale方法要声明异常,由上级方法捕获并处理。④要定义好自己的异常。
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码.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语句的程序代码。3.packageshiyan;publicclassa1{publicstaticvoidmain(Stringargs[]){try{Shopsh=newShop
(100);sh.sale
(200);System.out.println("销售成功!");}catch(InsufficientFundsExceptione){System.out.println(e.toString());}}}classShop{intnum;Shop(intnum){this.num=num;}publicvoiddeposite(intdAmount){num+=dAmount;}publicvoidsale(intdAmount)throwsInsufficientFundsException{if(num<dAmount)thrownewInsufficientFundsException();num=num-dAmount;}}classInsufficientFundsExceptionextendsException{privatestaticfinallongserialVersionUID=1L;InsufficientFundsException(){super("商品销售数量大于库存额!");}}
五、实验结果2.3.
六、讨论、心得通过本次实验,熟悉掌握了Java的异常机制,try{}catch(){}finally{}的执行过程。
通过new一个数组,从而通过数组的下标取出内容,当下标不合法时就会出现数组下标越界异常。通过catch捕获异常,并对异常作出处理。再通过将一个字符串的大写字母转换成小写字母,练习String的常用方法。
同时了解了字符串的使用。这仅仅是简单异常的处理,必须更进一步对异常熟悉。还有对字符串的其他方法进行练习并熟悉掌握。
还需要在课下多多练习,熟悉它们。实验五多线程编程
一、实验目的和要求
(1)现成的概念、线程的生命周期。
(2)多线程的编程:扩展Thread类与使用Runnable接口。
(3)使用多线程机制实现动画
二、实验内容1.运行下面的程序,理解用创建Thread子类的方法实现多线程。//S09_01_Thread.JavaImportjava.util.*;classS09_01_ThreadextendsThread{intpauseTime;Stringname;publicS09_01_Thread(intx,Stringn){pauseTime=x;name=n;}publicvoidrun(){while(true){try{system.out.println(name+":"+newDate(System.currentTimeMillis()));Tread.sleep(pauseTime);}catch(Exceptione){System.out.println(e);}}}staticpublicvoidmain(Stringsrgs[]){S09_01_Threadtp1=newS09_01_Thread(1000,"Fast");tp1.start();S09_01_Threadtp2=newS09_01_Thread(3000,"Slow");tp2.start();}}2.运行下面的程序,理解用实现Runnable接口的方法实现多线程。//S09_02_Thread.JavaImportjava.util.*;classS09_02_ThreadimplementsRunnable{intpauseTime;Stringname;publicS09_02_Thread(intx,Stringn){pauseTime=x;name=n;}publicvoidrun(){while(true){try{system.out.println(name+":"+newDate(System.currentTimeMillis()));Tread.sleep(pauseTime);}catch(Exceptione){System.out.println(e);}}}staticpublicvoidmain(Stringsrgs[]){Threadt1=newThread(newS09_02_Thread(1000,"Fast"));t1.start();Threadt2=newThread(newS09_02_Thread(3000,"Slow"));t2.start();}}3.创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码3.packagemymaths;importjava.sql.Date;publicclassXianchengextendsThread{publicstaticvoidmain(String[]args){Xianchengt1=newXiancheng();t1.start();Xianchengt2=newXiancheng();t2.start();Xianchengt3=newXiancheng();t3.start();}publicvoidrun(){System.out.println(""+this.getName()+""+newDate(System.currentTimeMillis()));}}
五、实验结果1.2.3.
六、讨论、心得线程是提高cpu运行效率的方法,内容很重要,需要认真学习和理解。实验六图形用户界面编程
一、实验目的和要求掌握文本组件、按钮和单、复选按钮组件的使用;掌握列表的使用,鼠标、键盘事件的处理;掌握布局控制的方法。
二、实验内容1.编写一个程序响应鼠标事件,当鼠标事件发生时,在状态条显示相应的时间信息。
提示:使用showStatus(字符串)方法。2.试设计一窗口,内含一个按钮。开始运行时,按钮显示“ClickMe”字样,当按钮按下时,按钮显示为“ClickMeAgain”字样,再按一次,则按钮显示“ClickMe”字样,依次循环。
三、主要仪器设备使用的计算机惠普:硬件配置Win
7、软件环境eclipse
四、实验代码1.packagemymaths;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.*;publicclassClick{publicstaticvoidmain(String[]args){JFramefrm=newJFrame();frm.setLayout(null);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButtonbtn=newJButton("请点击");btn.setBounds(45,65,100,200);frm.getContentPane().add(btn);ButtonHandlebur=newButtonHandle(btn);btn.addActionListener((ActionListener)bur);frm.setBounds(400,400,400,400);frm.setVisible(true);}}classButtonHandleimplementsActionListener{JButtonbtn;publicButtonHandle(JButtonbtn){this.btn=btn;}@OverridepublicvoidactionPerformed(ActionEvente){System.out.println("当前时间为:"+newDate(System.currentTimeMillis()));}}2.packagemymaths;importjavax.swing.*;importjava.awt.event.*;publicclassClick{JButtonbtn;publicstaticvoidmain(String[]args){JFramefrm=newJFrame();frm.setLayout(null);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JButtonbtn=newJButton("Clickme");btn.setBounds(45,65,200,300);frm.getContentPane().add(btn);ButtonHandlebur=newButtonHandle(btn);btn.addActionListener(bur);frm.setBounds(100,200,500,600);frm.setVisible(true);}}classButtonHandleimplementsActionListener{JButtonbtn;publicButtonHandle(JButtonbtn){this.btn=btn;}publicvoidactionPerformed(ActionEvente){if(btn.getText().equals("ClickMe")){btn.setText("ClickMeAgain");}elsebtn.setText("ClickMe");}}
五、实验结果1.2.
六、讨论、心得GraphicUserInterface,(图形用户界面):其实GUI其实只是一个图形界面,能比较形象的,生动的把模拟、运算结果表现出来。它只是一个包装外壳。您开发的程序,最好用这个包装起来,这样别人用的时候会方便很多很多.具体的算法,运算,分析是相对独立与GUI存在的。
换句话说,GUI可以只有外壳,而没有内容;或者你预先做好的算法都可以套进一个做好的GUI里去。(当然,GUI也是由m文件构成的。)但另一个方面,GUI是用来人机交流的界面。
所以,用户具体的行为,比如运行某一功能,暂停,重置,弹菜单,切换机面等等,在GUI中要精心设计。逻辑要精密,考虑要全面。
【java实验报告-总结 java实验报告格式范文】相关文章:
个人月度工作总结范文 个人月度工作总结简短(共9篇)07-18
java实训总结 java实训总结报告07-18
java实验心得体会范文 java实验报告心得体会07-18
JAVA实训报告心得体会及总结 java实训报告心得体会及总结怎么写07-18
java实训报告总结范文 java实训报告万能模板07-18
消防安全活动总结 消防安全活动总结中班07-18