java面向对象程序设计董小园_第1页
java面向对象程序设计董小园_第2页
java面向对象程序设计董小园_第3页
java面向对象程序设计董小园_第4页
java面向对象程序设计董小园_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、目 录第1章了解Java2第2章面向对象的“对象”7第3章对象的属性-变量详述9第4章对象的行为-成员方法详述12第5章生命周期及作用域17第6章Java常用类与函数库19第7章对象的进一步探讨-面向对象中的继承22第8章深入多态26第9章使用异常处理28第10章基于Swing的图形界面编程29第11章可视化程序的事件处理38第12章Java多线程机制51第1章 了解Java1. 编写一个程序,将用户在命令行输入的24小时制时间转换为12小时制。public class TimeTestpublic static void main(String args)int time; time = I

2、nteger.parseInt(args0); if(time<0|time>24)System.out.println("输入的不是一个合法时间!");else if(time>12)System.out.println("12小时制为"+(time-12)+"点");elseSystem.out.println("12小时制为"+time+"点");2. 用户输入x的数值,根据如下规则输出计算后的结果y值。 x (x<1) Y = 2x -1 (1<=x<

3、10) 3x -11 (x>=10)public class CalculateTestpublic static void main(String args)float x,y; x = Float.parseFloat(args0); if(x<1)y = x;else if(1<=x&&x<10)y = 2*x-1;elsey = 3*x-11;System.out.println(y);3. 编写一个Java应用程序,由命令行参数输入一个百分制成绩,要求打印出成绩等级“A”、“B”、“C” 、“D”、 “E”。90分以上为“A”;8089分为“B

4、”;7079分为“C”;6069分为“D”;60分以下为“E”。要求使用switch语句实现。运行效果如图2所示:图1public class PrintGrade public static void main(String args) double score = Double.parseDouble(args0);if(score<0 | score>100)System.out.println("错误,不是一个合法的百分制成绩!");elseint s = (int)score)/10;char grade;switch(s)case 10:case 9

5、: grade = 'A' break;case 8: grade = 'B' break;case 7: grade = 'C' break; case 6: grade = 'D' break;default:grade = 'E'System.out.println("成绩是:"+score+",相应的等级是"+grade);4. 假设今天是星期日,编写一个程序,求n天后是星期几。要求:n的数值由命令行输入;使用switch语句实现。public class DateT

6、est public static void main(String args) int n = Integer.parseInt(args0);switch (n%7)case 0: System.out.println(n+"天后是星期天"); break;case 1: System.out.println(n+"天后是星期一"); break;case 2: System.out.println(n+"天后是星期二"); break;case 3: System.out.println(n+"天后是星期三"

7、); break;case 4: System.out.println(n+"天后是星期四"); break;case 5: System.out.println(n+"天后是星期五"); break;case 6: System.out.println(n+"天后是星期六"); break;5. 用户在命令行输入一个数字,按照数字输出相应个数的星号。public class PrintStar public static void main(String args) int n = Integer.parseInt(args0);i

8、nt i;for( i=1; i<=n; i+)System.out.print("*");System.out.println();6. 编写程序,求0到100之间的偶数和。要求:分别用while语句、do while语句和for循环语句实现。while实现:public class SumDemo1 public static void main(String args) int sum = 0, i = 0;while(i<=100)if(i%2=0)sum = sum+i;i+;System.out.println("0-100之间所有偶数的和

9、是"+sum);do while实现:public class SumDemo2 public static void main(String args) int sum = 0, i = 0;doif(i%2=0)sum = sum+i;i+;while(i<=100);System.out.println("0-100之间所有偶数的和是"+sum);for循环实现:public class SumDemo3 public static void main(String args) int sum = 0, i = 0;for( ; i<=100;

10、i=i+2)sum = sum+i;System.out.println("0-100之间所有偶数的和是"+sum);7. 输入一个大于1的整数,求1到这个数的阶乘。用三种循环语句实现。提示:5的阶乘表示为5!,计算公式:5!=1*2*3*4*5while实现:public class Factorial1 public static void main(String args) int num = Integer.parseInt(args0);int result = 1;if(num<1)System.out.println("应输入大于1的整数!&q

11、uot;);elseint i = 1;while(i<=num)result = result*i;i+;System.out.println(num+"的阶乘是"+result);do while实现:public class Factorial2 public static void main(String args) int num = Integer.parseInt(args0);int result = 1;if(num<1)System.out.println("应输入大于1的整数!");elseint i = 1;dores

12、ult = result*i;i+;while(i<=num);System.out.println(num+"的阶乘是"+result);for循环实现:public class Factorial3 public static void main(String args) int num = Integer.parseInt(args0);int result = 1;if(num<1)System.out.println("应输入大于1的整数!");elseint i;for( i=1; i<=num; i+)result = r

13、esult*i;System.out.println(num+"的阶乘是"+result);8. 用for循环语句打印九九乘法表。public class Multiplication public static void main(String args) int i,j;for(i=1;i<=9;i+)for(j=1;j<=i;j+)System.out.print(i*j+"t");System.out.println();第2章 面向对象的“对象”1. 定义一个描述长方体的类Box,类中有三个整型的成员变量:length、width和

14、height,分别表示长方体的长、宽和高。定义setInfo(int ,int ,int)方法设置这三个变量的值;定义volumn()方法求长方体的体积并返回整型结果;定义area()方法求长方体的表面积并返回整型结果;定义toString()方法把长方体的长、宽、高,以及长方体的体积和表面积转化为字符串并返回字符串。编写Java应用程序,测试类Box,使用类中定义的各个方法,并将其结果输出。class Boxint length,width,height;public setInfo(int l,int w,int h)length = l;width = w;height = h;publ

15、ic int volumn()return length*width*height;public int area()return (length*width + length*height + width*height) * 2;public String toString()return "Length:" + length + " width:" + width + " height:" + height + " volumn: " + volumn() + " area:" + area

16、();public class BoxTest public static void main(String args) Box b = new Box(); b.setInfo(5,2,4);System.out.println(b.toString();2. 定义一个圆形类Circle,类中有一个用来描述半径的double型成员变量r,定义setR(double)方法初始化半径;定义getArea()方法求圆形的面积并返回double类型结果;定义getPerimeter()方法求圆形的周长并返回double类型结果。编写Java应用程序,使用Circle类创建两个对象,通过相应方法分别设

17、置不同的半径值,计算各自的面积及周长并显示结果。class Circle double r;void setR(double radius)r = radius;double getArea()return 3.14*r*r;double getPerimeter()return 2*3.14*r;public class CircleTest public static void main(String args) Circle c1 = new Circle();Circle c2 = new Circle();c1.setR(1);c2.setR(2);System.out.printl

18、n("c1的面积是"+c1.getArea()+",c1的周长是"+c1.getPerimeter();System.out.println("c2的面积是"+c2.getArea()+",c2的周长是"+c2.getPerimeter();第3章 对象的属性-变量详述1编写程序,计算如下表达式的值,将结果输出。(1) 3.5+1/2+56%10(2) 3.5+1.0/2+56%10(3) int a = 4%3*7+1 public class Testpublic static void main(String

19、 args) System.out.println( 3.5+1/2+56%10 );System.out.println( 3.5+1.0/2+56%10 );int a = 4%3*7+1;System.out.println( a );程序运行结果:9.510.082思考下列语句执行后变量a、b、c、d的值分别是多少:int a=5,b=8,c,d;c=(a+)*b;d=(+a)*b;执行后的结果是:a=7 b=8 c=40 d=563自定义一个字符串数组,提示用户输入5个字符串,通过循环语句实现将用户输入的字符串存放到数组里,然后反向输出这五个字符串。import java.util.

20、Scanner;public class Testpublic static void main(String args) Scanner reader = new Scanner(System.in);String str = new String5;int i;for(i=0;i<5;i+)System.out.println("请输入第"+(i+1)+"个字符串");stri = reader.next();System.out.println("反向输出这5个字符串:");for(i=4;i>=0;i-)Syste

21、m.out.println(stri);4定义一个实型数组用来存放学生成绩,提示用户确定成绩的个数,根据个数创建数组。提示用户输入每个成绩,为各数组元素赋值。询问用户要查找第几个同学的成绩,显示相应的查询结果,如果超出个数范围则进行相应提示。import java.util.*;public class Search1 public static void main(String args) Scanner reader = new Scanner(System.in);double score;System.out.println("您要输入多少个同学的成绩?");int

22、 num = reader.nextInt();score = new doublenum;for(int i=0;i<num;i+)System.out.println("请输入第"+(i+1)+"个同学的成绩");scorei = reader.nextDouble();System.out.println("您要查找第几个同学的成绩?");int index = reader.nextInt();if( index>=1 && index<=num-1 )System.out.println(&

23、quot;第" + index + "个同学的成绩是"+scoreindex-1);elseSystem.out.println("数据不在合法范围内,无法查找。");5在第4题的基础上进行改写,修改查询条件:询问用户要查找分数为多少的成绩,找到相应的成绩则显示第几位同学符合查询条件,找不到相应的成绩则显示没有该成绩,如果超出成绩范围则进行相应提示。import java.util.*;public Search2public static void main(String args) Scanner reader = new Scanner(

24、System.in);double score;System.out.println("您要输入多少个同学的成绩?");int num = reader.nextInt();score = new doublenum;for(int i=0;i<num;i+)System.out.println("请输入第"+(i+1)+"个同学的成绩");scorei = reader.nextDouble();System.out.println("您要查找的成绩是?");double s = reader.nextDo

25、uble();boolean flag = false;if(s>=0 && s<=100)for(int i=0;i<num; i+)if(scorei=s) System.out.println("第"+(i+1)+"个同学符合查询条件");flag = true;if(!flag)System.out.println("没有学生考该分数成绩");elseSystem.out.println("成绩非法,不能查询。");6提示用户输入一个整数,再提示用户输入一个符号。在屏幕上输

26、出该整数个这样的符号。import java.util.*;class CharTest public static void main(String args)Scanner reader = new Scanner(System.in); System.out.println("请输入一个整数");int n = reader.nextInt();System.out.println("请输入一个符号");char ch = reader.next().charAt(0);for(int i = 1; i<=n ;i+)System.out.p

27、rint(ch);System.out.println();第4章 对象的行为-成员方法详述1. 编写Java应用程序,定义一个计算两个整数和的方法static int add(int op1, int op2)。在main方法中声明两个整型变量,分别赋值,调用add()方法得到它们的和,在屏幕上输出结果。public class AddTest public static void main(String args) int num1,num2;num1 = 10;num2 = 20;System.out.println(num1 + "+" + num2 + "

28、;=" + add(num1,num2);static int add(int op1,int op2)return op1+op2;2. 编写程序,定义一个方法public static void abs(int a),用来求绝对值并输出结果。在main方法中从命令行读入一个整数,调用这个结果求它的绝对值。import java.util.Scanner;public class Demopublic static void main(String args) Scanner reader = new reader(System.in);System.out.println(&qu

29、ot;请输入一个整数");int n = reader.nextInt();abs(n); public static void abs(int a)if(a>=0)System.out.println("绝对值是"+a);elseSystem.out.println("绝对值是"+(-a);3. 在上述题目的基础上,修改abs成为带返回值的方法,即public static int abs(int a),实现相同的功能。import java.util.Scanner;public class Demopublic static voi

30、d main(String args) Scanner reader = new reader(System.in);System.out.println("请输入一个整数");int n = reader.nextInt();System.out.println("绝对值是"+abs(n); public static int abs(int a)if(a>=0)return a;elsereturn -a;4. 定义一个方法public static void draw( int n, char ch),实现输出n个ch符号。在main方法中提

31、示用户输入相应数据,调用draw方法输出图形。import java.util.Scanner;public class Multiplication public static void main(String args) Scanner reader = new Scanner(System.in);System.out.println("要显示哪个符号?");char c = reader.next().charAt(0);System.out.println("要显示多少个?");int num = reader.nextInt();draw(n

32、um,c);public static void draw( int n, char ch)for(int i=1; i<=n; i+)System.out.print(ch);System.out.println();5. 求数值累加和的方法public class App4 static int sum (int n) int s=0; for (int i=1; i<=n; i+ ) s+=i; return s; public static void main(String s) System.out.println(“110的累加和是” + sum(10); 6. 定义一

33、个类Initial,类的内部重载initArr()方法,分别实现对整型数组、双精度型数组、字符串数组的初始化功能,数组作为方法的参数,方法体内提示用户为数组元素输入数据,然后显示所有元素。在mian方法中创建三种类型的数组,创建Initial类的对象,分别调用initArr()方法进行初始化。import java.util.*;public class OverLoad2 public static void main(String args) / TODO Auto-generated method stubScanner reader = new Scanner(System.in);I

34、nitial init = new Initial();int a = new int6;init.initArr(a);double b = new double5;init.initArr(b);String s = new String3;init.initArr(s);class InitialScanner reader = new Scanner(System.in);void initArr(int arr) System.out.println("初始化整型数组"); for(int i=0;i<arr.length;i+) System.out.pr

35、intln("请输入第"+(i+1)+"个整数"); arri = reader.nextInt(); System.out.println("整型数组初始化完毕,所有元素为:"); for(int i=0;i<arr.length;i+) System.out.print(arri+" "); System.out.println("n-"); void initArr(double arr) System.out.println("初始化双精度型数组"); for(

36、int i=0;i<arr.length;i+) System.out.println("请输入第"+(i+1)+"个双精度数"); arri = reader.nextDouble(); System.out.println("双精度型数组初始化完毕,所有元素为:"); for(int i=0;i<arr.length;i+) System.out.print(arri+" "); System.out.println("n-"); void initArr(String arr)

37、 System.out.println("初始化字符串型数组"); for(int i=0;i<arr.length;i+) System.out.println("请输入第"+(i+1)+"个字符串"); arri = reader.next(); System.out.println("字符串型数组初始化完毕,所有元素为:"); for(int i=0;i<arr.length;i+) System.out.print(arri+" "); System.out.println(

38、"n-"); 7. 定义一个类MathDemo,类的内部重载round()方法,分别实现对单精度、双精度类型数据进行四舍五入的功能,要处理的实型数据作为参数,方法体最后将得到的结果返回。在mian方法中定义float与double类型变量,分别赋好初值,创建MathDemo类的对象,调用round()方法,将结果显示在屏幕上。import java.util.*;public class OverLoad3public static void main(String args) / TODO Auto-generated method stubfloat x = 3.475

39、f;double y = 3432.934;System.out.println(x+"四舍五入后为"+MathDemo.round(x);System.out.println(y+"四舍五入后为"+MathDemo.round(y);class MathDemostatic Scanner reader = new Scanner(System.in);static int round(float a)int n = (int)a;if(a-n>=0.5)return n+1;elsereturn n;static long round(doub

40、le a)long n = (long)a;if(a-n>=0.5)return n+1;elsereturn n;第5章 生命周期及作用域1. 定义一个按身高计算标准体重的类StdWeight,其中包含两个静态的成员方法:forMale(double h)计算男子标准体重、forFemale(double h)计算女子标准体重,两个方法均带返回值。在应用程序类的main方法中提示用户输入身高和性别,调用StdWeight类的方法得到标准体重,显示结果。计算公式:标准体重(男)=(身高cm-100)x0.9(kg) 标准体重(女)=(身高cm-100)x0.9(kg)-2.5(kg) 正

41、常体重:标准体重-(多少)10提示:控制实数保留N位小数:(如保留2位小数)cimalFormat;double num = 21.3749;DecimalFormat df = new DecimalFormat("0.00");String s = df.format(num); /21.37参考代码:import java.util.*;import java.text.*;public class Demo public static void main(String args) Scanner reader = new Scanner(System.in);Sys

42、tem.out.println("请输入您的身高(单位厘米)");double height = reader.nextDouble();System.out.println("请选择您的性别:1.男 2.女");int sex = reader.nextInt();DecimalFormat df = new DecimalFormat("0.00"); if(sex=1)System.out.println("标准体重是"+df.format(StdWeight.forFemale(height)+"

43、公斤");else if(sex=2)System.out.println("标准体重是"+df.format(StdWeight.forMale(height)+"公斤");elseSystem.out.println("您输入的选择不正确。");class StdWeightstatic double forMale(double h)return (h-100)*0.9;static double forFemale(double h)return (h-100)*0.9-2.5; 第6章 Java常用类与函数库1.

44、提示用户输入三角型两边边长与其夹角度数,利用公式s=1/2absin(c)计算三角型面积,输出结果。注意:正弦值的计算对象是弧度制的角,需将角度转换为弧度:/180。import java.util.Scanner;import java.text.DecimalFormat;class Demo public static void main(String args)Scanner reader = new Scanner(System.in);System.out.println("请输入三角型两边边长");double a = reader.nextDouble();

45、double b = reader.nextDouble();System.out.println("请输入两边夹角度数");double angle = reader.nextDouble();double s = 0.5*a*b*Math.sin(angle*Math.PI/180);DecimalFormat df = new DecimalFormat("0.00");String area = df.format(s);System.out.println("该三角型面积是"+area);/System.out.printl

46、n(Math.sin(90);2. 编写Java应用程序,使用Vector向量来保存用户输入的若干字符串。循环读入用户输入的字符串,以end作为结束。将所有字符串显示出来。在所有字符串的中间位置插入“NICE”,再次显示所有字符串。import java.util.Vector;import java.util.Scanner;class Demo public static void main(String args)Scanner reader = new Scanner(System.in);Vector vct = new Vector(1,1);System.out.println(

47、"请输入字符串,以输入end作为结束");String str;dostr = reader.next();vct.add(str);while(!str.equals("end");System.out.println("您刚才输入的所有字符串是:");System.out.println(vct.toString();System.out.println("插入NICE到中间位置:");int n = vct.capacity();vct.insertElementAt("NICE",n/2

48、);System.out.println(vct.toString();3. 显示InputDialog输入对话框实现对用户输入的英文单词进行简单处理(转换为大写、转换为小写、反转显示)。程序运行效果如下图:import javax.swing.JOptionPane;class Demo public static void main(String args)String str = JOptionPane.showInputDialog("请输入一个英文单词");str = str.trim();String items = "转换为大写", &qu

49、ot;转换为小写", "反转显示" ; Object selectedValue = JOptionPane.showInputDialog(null, "请选择", "输入", JOptionPane.INFORMATION_MESSAGE, null, items, items0);String choice = (String)selectedValue;if(choice.equals("转换为大写")JOptionPane.showMessageDialog(null,str.toUpperCa

50、se(),"操作结果",JOptionPane.INFORMATION_MESSAGE);else if(choice.equals("转换为小写")JOptionPane.showMessageDialog(null,str.toLowerCase(),"操作结果",JOptionPane.INFORMATION_MESSAGE);else JOptionPane.showMessageDialog(null,(new StringBuffer(str).reverse(),"操作结果",JOptionPane.

51、INFORMATION_MESSAGE);第7章 对象的进一步探讨-面向对象中的继承1. 定义一个球类Ball,包含一个私有成员变量半径(double r),两个公有成员方法:设定半径值方法( void setR(double x) 、 得到半径值方法(double getR( ))。定义一个台球类Billiards,继承Ball类,包含一个私有成员变量颜色(String color),两个公有成员方法:设定颜色方法(void setCol (String clo))、输出信息方法(void show()),其中show方法可以输出该台球的颜色和半径值。定义一个公有类,测试前两个类。class

52、 Ballprivate double r;public void setR(double x)r = x;public double getR()return r;class Billiards extends Ballprivate String color;public void setCol(String col)color = col;public void show()System.out.println("台球的颜色是"+color+",半径是"+getR();public class Demopublic static void main

53、(String args)Ball b1 = new Ball();b1.setR(10);System.out.println("球的半径是"+b1.getR();Billiards b2 = new Billiards();b2.setR(5);b2.setCol("蓝色");b2.show();2. 定义材料类Material,包含:保护的成员变量名称、单价(String name; double price;)为数据初始化赋值的构造方法;公有的成员方法得到所有信息(public String toString())。定义木材类Wood,继承自材料类。包含:私有的成员变量颜色(String col;)为数据初始化赋值的构造方法;覆盖公有的成员方法得到所有信息(public String toString())。定义公共类,测试上述两个类的使用。思考:程序中把木材类中toSt

温馨提示

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

评论

0/150

提交评论