太原理工大学java实验_第1页
太原理工大学java实验_第2页
太原理工大学java实验_第3页
太原理工大学java实验_第4页
太原理工大学java实验_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科实验报告课程名称: JAVA语言程序设计 实验项目: 基础编程 实验地点: 软件楼 专业班级: 软件 班 学号: 学生姓名: 指导教师: 2014年1月5日实验1 Java语言基础1.实验目的(1) 通过实验,掌握Java语言程序设计的基本方法。(2) 学会Java语言中标示符的命名、运算符和表达式的应用。(3) 熟练地掌握Java程序流程控制语句的应用。2.主要仪器设备笔记本电脑HP6460b,win7,eclipse3.实验内容(1) 编写应用程序,计算100(含100)以内所有偶数的和。package com.test11;public class Test11 /计算100以内所有

2、偶数的和public static void main(String args)int sum = 0;for(int i=2; i=100; i+=2)sum += i;System.out.println(100(包括100)以内所有的偶数之和sum=+sum);运行结果:(2) “水仙花数”是指一个3位数,其个位、十位、百位上的数字的立方和等于该数本身,例如371=33+73+13,因此371是一个水仙花数。编写程序,求所有的水仙花数。package com.test12;public class Test12 public static void main(String args)Sy

3、stem.out.println(所有3位数中的水仙花数为:);for(int i=100;i1000;i+) int a = i/100; int b = i/10%10; int c = i%100%10; if(a*a*a + b*b*b + c*c*c = i) System.out.println(i);运行结果:(3) 编写一个程序,求1-100间的素数。package com.test13;public class Test13 public static void main(String args)boolean f; System.out.println(1100之间的素数是

4、:); for(int i = 2; i = 100; i+) f = true; for(int j = 2; j i; j+) if(i % j = 0) f = false; break; if(f) System.out.print(i + ); 运行结果:(4) 有一函数: x (x1)Y= 3x-2 (1x10) 4x (x10) 写一程序,给定x值,输出y值。package com.test14;import java.util.Scanner;public class Test14 public static void main(String arges)System.out.

5、print(请输入一个x的值:);Scanner in = new Scanner(System.in);Double Y,x=in.nextDouble();if(x = 10)Y=4 * x;System.out.println(Y=+Y);else Y = 3*x-2;System.out.println(Y=+Y);运行结果: (5) 使用for循环语句,编写程序输出以下图案。package addsum;public class question5 public static void main(String args) for(int r=1; r0; space-) System

6、.out.print(+ +); for(int star=1; star=1; r-) for(int space=4-r; space0; space-) System.out.print(+ +); for(int star=1; star=2*r-1; star+) System.out.print(); System.out.print(n); 运行结果:(6) 编写程序,输出从公元1900年到2100年所有闰年的年号,每输出5个年号换一行。判断年是否为闰年的条件是: 若年号可以被4整除,而不能被100整除,则是闰年; 若年号可以被400整除,也是闰年。package com.tes

7、t15;public class Test16 public static void main(String args)for(int i=1900;i=2010;i+)int n = 0;if(i%4=0)&(i%100!=0)|(i%400=0)n+;System.out.println(i+是闰年); if(n%5=0) System.out.println(n); 运行结果:4.讨论、心得 试验中遇到的问题及体会 在实验过程中,整体都比较完整,基本没遇到什么太大调试问题,算法设计也比较清楚,结果相对比较满意。 体会:经过实验使我对本章的知识有了更深一步的理解,也学会了将C语言运用到ja

8、va语言中的学习方法,对知识做了进一步的巩固,同时也发现各种语言之间总有相同的模块,这也使我对以后各程序设计语言及各专业课的学习奠定基础,创造了条件实验2 数组和字符串编程1.实验目的(1) 通过实验,掌握Java语言中数组、字符串程序设计的基本方法。(2) 较熟练地掌握Java程序数组的应用、字符串处理操作的方法应用。2.实验内容(1) 编写一个程序,在控制台输入10个数,按大小顺序输出。package com.testTwo;import java.util.Scanner;public class TestTwo0 public static void main(String args)

9、int x=new int10; System.out.print(请输入十个整数:); Scanner sc=new Scanner(System.in); for(int i=0;i10;i+) xi=sc.nextInt(); sort(x);public static void sort(int x) / TODO Auto-generated method stub int temp; for (int i = 0; i 10; i+) for (int j = i + 1; j 10; j+) if (xi xj) temp = xi; xi = xj; xj = temp; fo

10、r (int i = 0; i 10; i+) System.out.print(xi + ,);运行结果:(2) 求一个3*3矩阵对角线元素之和。package com.testTwo;public class TestTwo2 public static void main(String args) int nums=1,2,3,4,5,6,7,8,9; int sum = 0; for(int i=0;i3;i+) for(int j=0;j3;j+) if(i=j|i+j=2) sum+=numsij; System.out.println(3*3矩阵对角线元素之和sum=+sum);

11、 运行结果:(3) 输入一段字符串,统计其中有多少个单词。(单词用空格隔开)package com.testTwo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class TestTwo3 public static void main(String args) throws IOExceptionint num=1;String s;System.out.print(请输入一段字符串:n);BufferedReader buf = new Bu

12、fferedReader(new InputStreamReader(System.in);s = buf.readLine();for (int i=0;ib)return a;else return b;public Integer minNum(int a, int b) if(ab)return b;else return a;public static void main(String args)int a=6,b=2,c=10;question3 s=new question3();int temp=s.maxNum(a, b);int temp1=s.maxNum(temp, c

13、);System.out.println(The MaxNum is+temp1);int temp2=s.minNum(a, b);int temp3=s.minNum(temp2, c);System.out.println(The MinNum is+temp3); 结果:(4) 编程实现以下简单超市管理,具体要求如下:1 实现描述超市的类Suppermacket类,具有货架属性,记录系统中现有商品,定义盘点商品的函数check(盘点各类商品的数量,并输出盘点结果),查询商品的函数query,并显示查询结果;2 定义商品类Goods,具有商品名称Name,商品价格Price,商品产地Pr

14、oducer等属性,操作Sale(销售商品,余额不足时给予提示)、Add(商品上架操作)和ShowMe(显示商品信息)。3 main函数,测试以上所要求的各种功能,即可以根据菜单命令增加、删除、查询商品、盘点商品,以及商品销售和商品上架的操作提示: 超市货架可以使用商品数组,数组大小100表明存放100个商品。 注意实现商品查询的多态性,要求可以根据商品的名称或产地或价格查询商品的数量。import java.io.*;import java.util.Scanner;public class Main static String name;static float price;static

15、int num;static String producer;static Supermarkt market=new Supermarkt();public static void main(String args)throws IOExceptionint i=0;while(true)market.ShowMenu();i=Integer.parseInt(Getline();switch(i)case 1: Add();break;case 2: Del();break;case 3: Showgoods();break;case 4: Query();break;case 5: Sy

16、stem.out.print(成功退出系统);return;default:System.out.println(输入错误,请重新输入!);break;public static void Query() System.out.println(*查询商品*);System.out.print(商品名:);name=Getline();if(!market.Query(name)System.out.print(没有该商品);public static void Showgoods() System.out.println(*显示所有商品*);if(!market.Showgoods()Syst

17、em.out.println(没有任何商品);public static void Del() System.out.println(*删除商品*);System.out.print(商品名称:);name=Getline();if(market.Del(name)System.out.println(删除商品- + name + 成功!);elseSystem.out.println(该商品不存在);public static void Add() System.out.println(*增加商品*);System.out.print(商品名称:);name=Getline();System

18、.out.print(商品价格:);price=Float.parseFloat(Getline();System.out.print(商品数量:);num=Integer.parseInt(Getline();System.out.print(商品产地:);producer=Getline();if (market.Add(name, price, num,producer) System.out.println(增加商品- + name + 成功!); else System.out.println(存在相同商品,增加失败!);public static String Getline()

19、Scanner scan = new Scanner(System.in);String str = scan.nextLine();return str.trim();Goodspublic class Goods private String name;private float price;private int num;private String producer;public Goods(String name,float price,int num,String producer)=name;this.price=price;this.num=num;this.

20、producer=producer;public String GetName()return ;public float GetPrice()return this.price;public int GetNum()return num;public String GetProducer()return ducer;public void Showgoods()System.out.print(商品名称: +name+ 商品价格:+price+ 商品数量:+num+ 商品产地:+producer+n);Supermarketimport java.util.

21、Vector;public class Supermarkt static Vector listgoods=new Vector();public void ShowMenu() System.out.println(-);System.out.println(1.增加商品 );System.out.println(2.删除商品);System.out.println(3.显示商品 );System.out.println(4.查询商品 );System.out.println(5.退出系统 );System.out.println(-);return;/增加商品public boolean

22、 Add(String name,float price, int num,String producer)int count=listgoods.size();for(int i=0;icount;i+)if(listgoods.get(i).GetName().equals(name)return false;Goods newgoods =new Goods(name,price,num,producer);listgoods.add(newgoods);return true;/删除商品public boolean Del(String name)int count=listgoods

23、.size();for(int i=0;icount;i+)if(listgoods.get(i).GetName().equals(name)listgoods.remove(i);return true;return false;/显示商品public boolean Showgoods()int count=listgoods.size();if(count=0)return false;else for(int i=0;icount;i+)listgoods.get(i).Showgoods();return true;/查询商品public boolean Query(String

24、name)int count=listgoods.size();for(int i=0;icount;i+)if(listgoods.get(i).GetName().equals(name)listgoods.get(i).Showgoods();return true;return false;结果:3.讨论、心得 通过实验,我掌握Java面向对象程序设计中类、继承、包和接口的概念与应用,能熟练应用方法、类、成员变量等元素,在实验过程中的确遇到过很多问题,不像前几章那样较容易实现各功能,我发现自己在知识方面还有很多的不足,在平时的练习中也不懂得扩展与举一反三,导致这次的实验做得马马虎虎,除

25、此之外也体会到了面向对象程序设计相对于过程化程序设计的优越性,总之,语言是一门技巧,要想能熟练掌握,必须多加练习。实验4 Java异常处理1.实验目的掌握异常的概念,以及如何定义、抛出和捕获处理异常。2.实验内容(1) 做实验之前要求思考以下问题,作为预习内容;1 错误和异常有何区别?查看Java异常类的关系图。2 异常是如何抛出、捕获和处理的?3 Java捕获和处理异常的结构式怎样的?4 Try语句如何嵌套?Trow语句有何作用?Finally程序快的作用是什么?(1)错误和异常有什么区别?答:致命性错误:如程序进入死循环,或递归无法结束,或内存溢出,称之为错误。错误只能在编程阶段解决,只能

26、依靠其他程序干预,否则一直处于非正常状态。 而非致命性的异常:如运算时除数为0,或操作数超出范围,或打开一个文件时发现文件并不存在,或欲装入的类文件丢失,或网络连接中断等,这类现象称为异常。(2)异常是如何抛出、捕获和处理的?答:1、Java程序在执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。2、当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。3、如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退

27、出。4、对于RuntimeException,通常不需要我们去捕获,这类异常由Java运行系统自动抛出并自动处理。5、派生类构造方法的异常说明必须包含基类构造方法的异常说明,即派生类构造方法的异常必须为基类异常或其父类,当基类构造方法没有异常时,派生类构造方法也可以异常声明。注意,派生类构造器不能捕获基类构造方法抛出的异常。6、派生类方法可以不抛出异常,即使基类有异常说明,如果派生类方法有异常说明,必须是基类异常或其子类,而且当基类没有异常声明时,派生类方法不允许异常声明(关于构造方法见5中的说明)。7、我们可以在方法声明时,声明一个不会抛出的异常,Java编译器就会强迫方法的使用者对异常进行

28、处理。这种方式通常应用于abstract class和interface中。(3)Java捕获和处理异常的结构是怎样的?答:使用try-catch-finaly语句来捕获,获得异常后自己处理或者让系统自己处理。(4)为了避免程序运行时可能出现的错误,将程序代码放在try程序块中,紧跟在try语句后面包括一个catch语句,用来指定需要捕获的异常类型。 在程序中发生异常时,程序员可以抛出(throw)一个自定义异常类的实例,将其放到异常队列中去,并激活java的异常处理机制。 当抛出一个异常时,程序的执行就不再是线性的,这样就有可能导致方法的执行中断。在java语言中,使用finally语句来解

29、决此类问题。Finally语句创建一个代码块,在try/catch语句执行后执行,不管是否抛出一个异常,系统都将执行finally语句的程序代码。(2) 运行下面的程序,理解异常的抛出、捕获与处理。Import java.io.*;public class void main(String args) public staic void main(String args) for(int i=0;i4;i+) int k; try switch(i) case 0: /divided by zero int zero=0; k=911 /zero break; case 1:/null poi

30、nter int b=null; k=b0; break; case 2; /array index out of bound int c=new int2; k=c9; break; case 3: /string index out of bound char ch=abc.charAt(99); break; catch(Exception e) System.out.println(nTestcase#+i+n); System.out.println(e); 以下实验内容运行结果为:(3)在实验三中的超市、商品类中创建一个自定义异常类。 要求:在定义商品类时,若销售商品数量大于余额则

31、作为异常处理(InsufficientFundsException)。提示:1 产生异常条件是某类商品销售数量大于库存额,因此是否抛出异常要先判断该条件。2 确定产生异常的方法,应该在sale方法中产生异常Insufficient Funds Exception。3 处理异常安排在调用sale的时候,因此sale方法要声明异常,由上级方法捕获并处理。4 要定义好自己的异常。import java.util.Scanner;public class Z6_3 private long balance=0;public void deposit(long x) /存款balance=balance

32、+x;System.out.println(存+x+元成功);public void withdraw(long x)throws InsufficientFundsException /取款 if(x=balance) balance=balance-x; System.out.println(取+x+元成功); else throw new InsufficientFundsException(余额小于取款额,取款失败+n); public void getbalance(long x) /查询System.out.println(您的余额为:+balance); public stati

33、c void main(String args) Z6_3 account=new Z6_3();Scanner in=new Scanner(System.in);while(true)System.out.println(请输入您接下来进行的操作序号:1存款;2取款;3查询余额);int i=in.nextInt(); switch(i) case 1:System.out.print(请输入存款的数额:);int j=in.nextInt();account.deposit(j);break; case 2:System.out.print(请输入取款的数额:);int k=in.nex

34、tInt(); try account.withdraw(k); catch(InsufficientFundsException f) System.out.print(f.getMessage(); break; case 3:account.getbalance(account.balance);break; class InsufficientFundsException extends Exceptionpublic InsufficientFundsException(String msg)super(msg);3. 讨论、心得 在程序的整个运行过程中,程序比较容易调试,也没出现任

35、何问题,即使如此,我觉得要真正掌握这一部分内容也不是那么容易,所以以后我更应该多去尝试新的题型,希望能彻底把这一部分给掌握了,以至于使所编写的程序更加健壮,完美。实验5 多线程编程1.实验目的(1) 现成的概念、线程的生命周期。(2) 多线程的编程:扩展Thread类与使用Runnable接口。(3) 使用多线程机制实现动画2.实验内容(1) 运行下面的程序,理解用创建Thread子类的方法实现多线程。/S09_01_Thread.JavaImport java.util.*;class S09_01_Thread extends Thread int pauseTime; String na

36、me; public S09_01_Thread(int x,String n) pauseTime=x; name=n;public void run() while(true) try system.out.println(name+:+new Date(System.currentTimeMillis(); Tread.sleep(pauseTime); catch(Exception e)System.out.println(e); static public void main(String srgs) S09_01_Thread tp1=new S09_01_Thread(1000

37、,Fast); tp1.start(); S09_01_Thread tp2=new S09_01_Thread(3000,Slow); tp2.start(); (2) 运行下面的程序,理解用实现Runnable接口的方法实现多线程。/S09_02_Thread.JavaImport java.util.*;class S09_02_Thread implements Runnable int pauseTime; String name; public S09_02_Thread(int x,String n) pauseTime=x; name=n;public void run() w

38、hile(true) try system.out.println(name+:+new Date(System.currentTimeMillis(); Tread.sleep(pauseTime); catch(Exception e)System.out.println(e); static public void main(String srgs) Thread t1=new Thread(new S09_02_Thread(1000,Fast); t1.start(); Thread t2=new Thread(new S09_02_Thread(3000,Slow); t2.sta

39、rt(); (3) 创建简单的程序ThreeThread.java,该程序将创建三个线程,每个线程应当显示它所运行的时间(可以考虑使用Date类或Calendar类)。package 线程;import java.util.*;public class L09_03_ThreeThread extends Thread int pauseTime; String name; public L09_03_ThreeThread(int x,String n) pauseTime=x; name=n; public void run() while(true) try System.out.pri

40、ntln(name+:+new Date(System.currentTimeMillis(); catch(Exception e) System.out.println(e); public static void main(String args) L09_03_ThreeThread tp1=new L09_03_ThreeThread(1000,Fast); tp1.start(); L09_03_ThreeThread tp2=new L09_03_ThreeThread(2000,Midle); tp2.start(); L09_03_ThreeThread tp3=new L09_03_ThreeThread(3000,Slow); tp3.start(); 3.讨论、心得 在java程序设计中,所有进程都是包含线程概念的,一般都是把主程序当作主线程。对多线程的综合支持是java语言的一个重要特色,在java中,内置了Thread类来实现多线程,当程序引用了java.lang.Thread类时,也就引入了一个java执行环境。当程序加载到内存时,启动主程序,如果需要使用其他线程,则可以采用以下两种方式创建新的线程:一种是继承java.lang.Thread类,用它覆盖Threa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论