2015网络编程技术实验指导书[2015新版](1).doc_第1页
2015网络编程技术实验指导书[2015新版](1).doc_第2页
2015网络编程技术实验指导书[2015新版](1).doc_第3页
2015网络编程技术实验指导书[2015新版](1).doc_第4页
2015网络编程技术实验指导书[2015新版](1).doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

网络编程技术实验指导书计算机科学与软件学院李建伟2015(新版)河北工业大学计算机学院网络编程实验指导书实验一:Java 基本语法实验目的:了解 Java 的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握 Java 基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。实验要求:1、编写一个声明 Java 不同数据类型变量的程序。2、编写使用不同选择结构的程序。3、编写使用不同循环结构结构的程序。 实验内容:1、声明不同数据类型变量1)编写声明不同数据类型变量的程序public class SimpleTypes public static void main(String args) byte b=0x55; short s=0x55ff; int i=1000000; long l=0xfffL; char c=c; float f=0.23F; double d=0.7E-3; boolean bool=true; System.out.println(b=+b); System.out.println(s=+s); System.out.println(i=+i); System.out.println(l=+l); System.out.println(c=+c); System.out.println(f=+f); System.out.println(d=+d); System.out.println(bool=+bool); 编译并运行该程序,分析程序的运行结果。分析:16进制数以0x开头,所以b的值是5*16+5*1。 Float要以F或f结尾。 D为科学技术法所以自动转换位数。 这里所有的计算值都在此数据类型的取值范围内。1) Integer类在某对象中打包了原始类型为int的值。Integer类型对象包含int型的单个域。此外,此类提供了许多方法,可以将int型转换为string型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。public class IntegerDemopublic static void main(String args)Integer array=new Integer(20), new Integer(40), new Integer(110);for(int i=0;iarray.length;i+) System.out.println(Integer.toBinaryString(Value()+t); System.out.println(Integer.toHexString(Value()+t); System.out.println(Integer.toOctalString(Value()+n);编译并运行该程序,分析程序的运行结果 分析:定义看三个 Integer为20,40,110 分别以2进制,16进制,8进制 输出定阿斯顿2、使用选择结构使用 if.else 语句1)编写源程序文件,代码如下。 public class TestIf public static void main(String args) boolean leap; int year=2005; if (year%4=0 & year%100!=0) | (year%400=0) System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); year=2008; / 方法 2 if (year%4!=0) leap=false; else if (year%100!=0) leap=true; else if (year%400!=0) leap=false; else leap=true; if (leap=true) System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); year=2050; / 方法 3 if (year%4=0) if (year%100=0) if (year%400=0) leap=true; else leap=false; else leap=false; else leap=false; if (leap=true) System.out.println(year+ 年是闰年); else System.out.println(year+ 年不是闰年); 2) 编译运行程序,分析程序的运行结果。 分析:以三种不同的条件判断格式分别判断三个年份是不是闰年使用 switch 语句1)编写程序用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息class SwitchTest public static void main(String args) throws java.io.IOException char a; System.out.println(Enter a number from 1-3:); a=(char)System.in.read(); switch(a) case1:System.out.println(win a Car!);break; case2:System.out.println(picked the goat);break; case3:System.out.println(get to keep your 100); break; default:System.out.println(entry); 2)编译运行程序,分析程序的运行结果。 分析:根据1.2.3输入顺序 的输出不同输出不 同结果。当不是123 时,输出entry3、使用循环结构使用for语句1)程序源代码如下:class TestFor public static void main (String args) int fahr,cels; System.out.println(Celsius Fahrenheit); for(cels=0;cels=100;cels+=5) fahr=cels*9/5+32; System.out.println(cels+fahr); char a; outer:/this is the label for the outer loop for(int i=0;i10;i+) for(int j=0;j10;j+) a=(char)System.in.read(); if(a=b) break outer; if(a=c) continue outer; 2)改正源程序中错误,分析错误原因和程序的运行结果。 分析:错误原因为未处理的异常类型,需要添加一个抛出声明 public static void main (String args) throws IOException 使用while语句1)程序源代码如下:import java.io.*; TestWhile public static void main(String args) throws IOException char ch; System.out.println(按 1/2/3 数字键可得大奖!); System.out.println(按空格键后回车可退出循环操作.); while (ch=(char)System.in.read()!= ) System.in.skip(2); / 跳过回车键 switch (ch) case 1: System.out.println(恭喜你得大奖,一辆汽车!); break; case 2: System.out.println(不错呀,你得到一台笔记本电脑!); break; case 3: System.out.println(没有白来,你得到一台冰箱!); break; default: System.out.println(真不幸,你没有奖品!下次再来吧。); 请编译运行程序,分析程序的运行结果。多重循环,输出九九乘法表的程序。 public class TestMul public static void main(String args) int i,j,n=9; System.out.print( * |); for (i=1;i=n;i+) System.out.print( +i); System.out.print(n-|); for (i=1;i=n;i+) System.out.print(-); System.out.println(); for (i=1;i=n;i+) System.out.print( +i+ |); for (j=1;j=1) & (m=1) & (d=31) ? d : 1); public Test_YMD() this(0,0,0); public static int thisyear() return Calendar.getInstance().get(Calendar.YEAR);/返回当年的年份 public int year() return year;/返回年份 public String toString() return year+-+month+-+day;/返回转化为字符串的年-月-日 编译Test_YMD.java文件,分析运行结果。 l 编写使用包Mypackage中Test_YMD类的程序 YMD_2.java程序功能:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了Test_YMD 的方法来计算年龄。源代码如下 import Mypackage.Test_YMD; /引用 Mypackage 包中的 KY4_1_YMD 类 public class YMD_2 private String name; private Test_YMD birth; public static void main(String args) YMD_2 a = new YMD_2(张驰,1990,1,11); a.output(); public YMD_2(String n1,Test_YMD d1) name = n1; birth = d1; public YMD_2(String n1,int y,int m,int d) this(n1,new Test_YMD(y,m,d);/初始化变量与对象 public int age() /计算年龄 return Test_YMD.thisyear() - birth.year(); /返回当前年与出生年的差即年龄 public void output() System.out.println(姓名 : +name); System.out.println(出生日期: +birth.toString(); System.out.println(今年年龄 : +age(); 编译并运行程序,分析程序的运行结果。6、编程题,编写程序并写出运行结果 (1)创建一个名称为Pay的类,该类包括工作小时、每小时工资、扣缴率、应得工资总额和实付工资等5个双精度型的成员变量。创建3个重载的应得工资computeNetPay()方法。应得工资是工时乘以每小时工资的计算结果。当computeNetPay()接收代表小时、扣缴率和工资率的数值时,计算出应得工资=工作小时*每小时工资*(1扣缴率)*(1工资率)。当computeNetPay()接收两个参数时,扣缴率假定为15%,计算出应得工资=工作小时*每小时工资*(10.15)*(1工资率)当computeNetPay()接收一个参数时,扣缴率假定为15%,每小时工资率为4.65%。同时编写一个测试类,该测试类的main方法测试所有3个重载的方法。 (2)商店销售某一件商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握价格(price),在统一折扣的基础上,对一次购入10件以上者,还可以销售9.5折优惠。现已知当天5名售货员的销售情况为:售货员编号(num) 销售件数(quantity) 销售单价(price) 101 3 126.8221 8 125.6325 10 124.8108 45 123.4901 100 121.5编写销售商品类Sale和含有main方法的公共类Test,计算当天此商品的总销售额sum,以及每件商品的平均售价,并在显示器上显示。(3)定义接口Shape及其抽象方法getArea()和getPerimeter()用于计算图形和面积和周长。定义类Rectangle(矩形)、类Circle(圆形)、类Triangle(三角形),要求这些类继承点类Coordinates()并实现接口的抽象方法。提示:class Coordinates long x; long y; Coordinate(long x, long y)this.x=x; this.y=y;实验三:异常处理程序设计实验目的:了解Java中异常处理(exception)的作用及常用的异常类,掌握异常处理的设计方法。实验要求:理解系统异常处理的机制和创建自定义异常的方法。实验内容:在已实现的方法中,加入出错处理异常(EXCEPTION),又称例外,是特殊的运行错误,对应着Java语言特定的运行机制。由于Java程序是在网络环境中运行的,安全成为需要首先考虑的首要因素之一。为了能够及时有效的处理程序中的运行错误,Java中引入了异常和异常类。作为面向对象的语言,异常与其它语言要素一样,是面向对象规范的一部分,是异常类的对象。Java的异常类是处理运行是错误的特殊类,每一种异常类对应一种特定的运行错误。所有的Java异常类都是系统类库中的Exception类的子类。Throwable类是java.lang包中的一个类,它派生了两个子类:Exception和Error。其中Error类由系统保留,而Exception类则供应用程序使用。系统定义的运行异常:Exception类有若干子类,每一个子类代表了一种特定的运行错误。这些子类有些是系统事先定义好包含在Java类库中的,称为系统定义的运行异常。系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误,甚至是整个系统的瘫痪,所以需要定义异常来特别处理。用户自定义的异常:系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用所特有的错误,则需要用户程序自己创建用户自定义异常。这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。用户自定义异常用来处理程序中可能产生的逻辑错误,使得这种错误能够被系统及时识别并处理。因此用户自定义异常可以使用户程序更为强健,使整个系统更加安全稳定。异常的抛出:Java程序在运行时如果引发了一个可识别的错误,就会产生一个与该错误相对应的异常类的对象,这个过程被称为异常的抛出。异常的抛出根据异常类的不同,抛出的方法也不同。所有的系统定义的异常都可以由系统自动抛出;用户程序自定义的异常必须借助于throw语句来定义何种情况算是产生了此种异常对应的错误,并应该抛出这个异常的新对象。异常的处理:当一个异常被抛出时,应有专门的语句来接受这个被抛出的异常对象,这个过程被称为捕捉异常。当一个异常类被捕捉或接收后,用户程序就会发生跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和Java虚拟机回到操作系统。在Java程序里,异常处理语句的格式如下: try /用try语句来选定捕获异常的范围 catch /捕获只能作输出操作 异常处理语句组 finally 1)下面的程序中定义了一个用户程序的异常InsuffivientFoundsException,这个异常用来处理帐户资金不足的逻辑错误。class BankAccountString getAccountNumber()return (AccountNumber);/.String Balance()return(Balance or not);/.class InsufficientFoundsException extends Exception private BankAccount m_ba;private double getAmount; InsufficientFoundsException(BankAccount ba, double dAmount) super(Insufficient founds in account); m_ba=ba;getAmount=dAmount;public String toString() StringBuffer sb=new StringBuffer(); sb.append(Insufficient founds in account); sb.append(m_ba.getAccountNumber(); sb.append(nBalance was); sb.append(m_ba.Balance(); sb.append(ngetAmount was); sb.append(getAmount); return sb.toString(); public class TestExcep1 public static void main(String args ) int I=0; String greeting= Hebut, Tianjin, Computer,software; while(I4) try System.out.println(greetingI); catch(ArrayIndexOutOfBoundsException e) System.out.println(越界); I=-1; finally System.out.println(总会运行+I); I+; 2) public class TestExcep2 public static void main(String arg3) System.out.println(这是一个异常处理的例子n); try int i=10; i /=0; catch (ArithmeticException e) System.out.println(异常是:+e.getMessage(); finally System.out.println(finally 语句被执行); 请根据题目要求,编写程序并写出运行结果1、设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串,如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,如果从命令行输入ABC,则没有抛出异常。(只有XYZ和ABC两种输入)。2、使用命令行方式输入四个参数,分别是姓名、数学成绩、英语成绩、Java成绩,求总成绩和平均成绩,处理数组下标越界、成绩不是数组、成绩输入不合理(不在1-100之间)的异常。要去:自己定义输出成绩不合理的异常。提示1:数组下标越界异常为:ArrayIndexOutOfBoundsException 成绩不是数组的异常采用Java中的异常:NumberFormatException提示2:自定义的异常通常是Exception的子类。 实验四:多线程程序设计实验目的:理解线程的概念、线程的生命周期,掌握多线程的编程:继承Thread类与使用Runnable接口。实验要求:1、掌握两种创建线程的方法:一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runnable接口。2、掌握线程优先极。3、掌握线程的同步方法。实验内容:多线程是指同时存在的几个执行体,按几条不同的执行线索共同工作的情况。Java语言的一个重要功能特点就是内置对多线程的支持,踏实的编程人员可以很方便的开发出具有多现成功能,能同时处理多个任务的功能强大的应用程序。Java中编程实现多线程应用有两种途径:一种是创建用户自己的线程子类,另一种是在用户自己的类中实现Runable接口。无论那种方法,都需要使用到Java基础类库中的Thread类及其方法。创建Thread类的子类:在这个途径中,用户程序需要创建自己的Thread类的子类,并在子类中重新定义自己的run()方法,这个run()方法中包含了用户线程的操作。这样在用户程序需要建立自己的线程时,他只需要创建一个一定已定义好的Thread子类的实例就可以了。实现Runnable接口:在这个途径中,已经有了一个父类的用户类可以已通过实现Runable()接口的方法来定义用户线程的操作。我们知道,Runable接口只有一个方法run(),实现这个接口,就必须要定义run()方法的具体内容。用户新建现成的操作也有这个方法来决定。定义好run()方法后,当用户程序需要建立新线程时,只要以这个实现了Runnable()方法的类为参数创建系统类Thread的对象,就可以把用户实现的run()方法继承过来。l 用创建Thread类的子类的方法实现多线程 class Fruitthread extends Thread public FruitThread (string str) super(str); public void run() for(init i = 0;i5;i+) system.out.println(i+” ”+getName(); try sleep(init)(Math.random()*1000); catch(InterruptedException e) class TwoFruit public static void main(string args) new FruitThread (“苹果”).start(); new FruitThread(“梨”).start(); 编译并运行程序。l 用实现Runnable接口的方法实现多线程 class outputClass implements Runnable String name; outputClass(String s) name = s; public void run() for(int i=0;i3;i+) System.out.println(name); Thread.yield(); class runThreads public static void main(String argv) outputClass ou

温馨提示

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

评论

0/150

提交评论