java的一些作业_第1页
java的一些作业_第2页
java的一些作业_第3页
java的一些作业_第4页
java的一些作业_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、JAVA语言程序设计(基础篇)实训报告姓 名: 专业班级: 学 号: 年 月 日河南理工大学计算机学院1实训目的通过两周的实训,熟练掌握Java语言的基础知识、类与对象的基本概念、类的方法、类的重用以及接口和多态等内容,为Java高级篇的学习打下坚实的基础。2实训内容实训内容覆盖Java语言的基础知识、类与对象的基本概念、类的方法、类的重用以及接口和多态等内容,由4个必做的设计题目和15个选做的方法实现题目组成。2.1复数类声明并测试一个复数类,其方法包括toString()、equals()及复数的加、减、乘运算。2.2坐标点(1)编写一个类来描述坐标点的状态信息以及每个状态信息的设置和读取

2、方法。(2)为(1)所编写的类添加两个构造方法,要求:第一个构造方法为默认构造方法,将坐标点初始化为(0,0)的位置;第二个构造方法带有两个参数,分别初始化横坐标和纵坐标。(3)编写一个类, 该类描述了一个具有权值的坐标点,要求:一是必须继承(2)所编写的类;二是该类必须具有一个带3个参数的构造方法,分别初始化横坐标、纵坐标和权值,并且必须使用父类的构造方法来初始化横坐标和纵坐标;三是写一个方法,来判断两个具有权值的坐标是否相等,并将结果显示在屏幕上。2.3微型CAD 问题描述:编写一个程序,模拟实现一个微型的CAD系统。该程序的几何形体至少包括圆、三角形和直线。只要求示例几何图形的绘制,不要

3、求实际绘制。要点解析:本程序中的几何图形包括圆(Circle)、三角形(Triangle)和直线(Line)。可以将Shape声明为抽象类,规定所有的子类对象都应具有的行为,如绘制图形。对于不同的几何图形,绘制方法会有所不同,在超类Shape中无法具体定义,因此可以声明为抽象方法,Shape的所有子类都必须对这个抽象方法进行重写。CadSystem本身由多个几何形体组成。直线有起点和终点。2.4 三种动物的定义问题描述:乌鸦会飞但不会说话,大猩猩不会飞但能说话,鹦鹉既会飞又会说话。运用接口的知识,编写一个程序对该问题进行建模。要点解析:模拟说话可以设计一个Talkable接口,通过在该接口中声

4、明talk()方法表示说话行为;同样可以定义一个Flyable接口表示“飞”,该接口有一个fly()方法。然后设计三个类Parrot、Corbie和Gorilla表示鹦鹉、乌鸦与大猩猩。2.1复数类声明并测试一个复数类,其方法包括toString()、equals()及复数的加、减、乘运算。试验程序如下:import java.io.*;class fushu 本程序用字级独特的思路和做法,对新的内容进行了预习,对学习过的内容进行补充。double shibu; double xubu;public fushu(double shibu,double xubu) this.shibu=shib

5、u; this.xubu=xubu; public static double add(double x,double y) return(x+y);public static double dec(double x,double y) return(x-y);public static double mul(double x,double y) return(x*y);public static double ReadData()String s=" "tryBufferedReader in = new BufferedReader(new InputStreamRea

6、der(System.in);s=in.readLine();return(Double.parseDouble(s);catch(IOException e)System.out.println("输入非法!");return(0.0); public String toString() return(shibu+"+"+xubu+"i"); public static void main(String args)double a,b,c,d; System.out.println("请输入第一个复数的实部:")

7、;a=fushu.ReadData();System.out.println("请输入第一个复数的虚部:");b=fushu.ReadData();System.out.println("请输入第二个复数的实部:");c=fushu.ReadData(); System.out.println("请输入第二个复数的虚部:");d=fushu.ReadData(); fushu x=new fushu(a,b);System.out.println("您输入的第一个复数是:"+x);fushu y=new fushu

8、(c,d);System.out.println("您输入的第二个复数是:"+y);a=fushu.add(x.shibu,y.shibu); b=fushu.add(x.xubu,y.xubu); fushu addl=new fushu(a,b);System.out.println("您输入的两个复数的和是:"+addl);a=fushu.dec(x.shibu,y.shibu); b=fushu.dec(x.xubu,y.xubu); fushu decl=new fushu(a,b);System.out.println("您输入的两

9、个复数的差是:"+decl); a=fushu.mul(x.shibu,y.shibu); b=fushu.mul(x.xubu,y.xubu); c=fushu.mul(x.shibu,y.xubu); d=fushu.mul(x.xubu,y.shibu); a=fushu.dec(a,b); b=fushu.add(c,d);fushu mull=new fushu(a,b);System.out.println("您输入的两个复数的积是:"+mull); 2.2坐标点(1)编写一个类来描述坐标点的状态信息以及每个状态信息的设置和读取方法。(2)为(1)所编

10、写的类添加两个构造方法,要求:第一个构造方法为默认构造方法,将坐标点初始化为(0,0)的位置;第二个构造方法带有两个参数,分别初始化横坐标和纵坐标。(3)编写一个类, 该类描述了一个具有权值的坐标点,要求:一是必须继承(2)所编写的类;二是该类必须具有一个带3个参数的构造方法,分别初始化横坐标、纵坐标和权值,并且必须使用父类的构造方法来初始化横坐标和纵坐标;三是写一个方法,来判断两个具有权值的坐标是否相等,并将结果显示在屏幕上。试验程序如下:public class Test1String x=""String y=""public Test1() th

11、is.x="10"this.y="20"public Test1(String x1,String y1) this.x=x1;this.y=y1;public String getX() return x;public void setX(String x) this.x = x;public String getY() return y;public void setY(String y) this.y = y;做出了两个程序!Test2.javapublic class Test2 extends Test1 String z="&quo

12、t; public Test2() public Test2(String x,String y,String z) super(x,y); this.z=z; public void print() System.out.println(super.x); System.out.println(super.y); System.out.println(z); public static void main(Stringargs) Test2 t=new Test2("20","40","60"); t.print(); 2.3微型C

13、AD 问题描述:编写一个程序,模拟实现一个微型的CAD系统。该程序的几何形体至少包括圆、三角形和直线。只要求示例几何图形的绘制,不要求实际绘制。要点解析:本程序中的几何图形包括圆(Circle)、三角形(Triangle)和直线(Line)。可以将Shape声明为抽象类,规定所有的子类对象都应具有的行为,如绘制图形。对于不同的几何图形,绘制方法会有所不同,在超类Shape中无法具体定义,因此可以声明为抽象方法,Shape的所有子类都必须对这个抽象方法进行重写。CadSystem本身由多个几何形体组成。直线有起点和终点。abstract class Shape abstract void dra

14、w();class Circle extends Shapevoid draw()System.out.println("画圆");class Triangle extends Shapevoid draw()System.out.println("画三角形");abstract class Point extends Shapeint x,y;Point(int x,int y)this.x=x;this.y=y;public String toSting()return"(" + x + "," +y+&quo

15、t;)"void draw()System.out.println("画点"+"("+x+","+"+y+"); class Line extends ShapePaint start;private Point end;Line (Paint start,Point end)super();this.start=start;this.end=end; void draw() System.out.println("画直线 起点"+ start+"到终点"+end)

16、; public class CadSystem extends Shapeprivate Shape testCiecle;private Shape testTriangle;private Shape lines =new Line5;public CadSystem()for(int j=0;j<lines.length;j+)linesj=new Line(new Paint(j,j),new point(j+1,j+1);testCiecle = new Circle();testTriangle = new Triangle();public static void mai

17、n(String args)CadSystem cs = new CadSystem();cs.draw();public void draw()draw(testCircle);draw(testTRiangle);for(int j=0;j<lines.length;j+) drew(linesj);void draw(Shape shape)shape.draw();2.4 三种动物的定义问题描述:乌鸦会飞但不会说话,大猩猩不会飞但能说话,鹦鹉既会飞又会说话。运用接口的知识,编写一个程序对该问题进行建模。要点解析:模拟说话可以设计一个Talkable接口,通过在该接口中声明talk

18、()方法表示说话行为;同样可以定义一个Flyable接口表示“飞”,该接口有一个fly()方法。然后设计三个类Parrot、Corbie和Gorilla表示鹦鹉、乌鸦与大猩猩。import java.until.Random;interface Flyablevoid fly();interface Talkablevoid talk();class Parrot implements Flyable,Talkablepublic void fly()System.out.println("Hello! I am a poarroy!I can fly");public v

19、oid talk( )Sytem.out.printlen("Hello!I am a parrot!"); class Corbie implements Flyablepublic void fly()System.out.println("Hello!I am a Gorilla, I am talk!"); class RandomFlyableGeneratorprivateRandom rand=new Random();public Object next()switch(rand.nextInt(3)default:case 0:retu

20、rn new parrot();case 1:return new Corbie();Case 2:REturn new Gorilla(); public class MultLnherrittprivate static RandomFlyableGenerator gen = new RandomFlyableGenerator();public static void main(String args)Objects=new Object6;for(int i =0;I<s.length;i+)si=gen.next();if(si instanceof Flyable)(Fly

21、able)si),fly();if(si instanceof Talkable)(tablkable)si).talk(); 2.5方法的实现15题(1)程序分析:兔子的规律为数列1,1,2,3,5,8,13,21. public class exp2public static void main(String args)int i=0;for(i=1;i<=20;i+)System.out.println(f(i);public static int f(int x)if(x=1 | x=2)return 1;elsereturn f(x-1)+f(x-2);(2)判断101-200

22、之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class exp2public static void main(String args)int i=0;math mymath = new math();for(i=2;i<=200;i+)if(mymath.iszhishu(i)=true)System.out.println(i);class mathpublic int f(int x)if(x=1 | x=2)return 1;elsereturn f(x-1)

23、+f(x-2);public boolean iszhishu(int x) for(int i=2;i<=x/2;i+)if (x % 2=0 )return false;return true;(3)题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方5的三次方3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 public class exp2public static voi

24、d main(String args)int i=0;math mymath = new math();for(i=100;i<=999;i+)if(mymath.shuixianhua(i)=true)System.out.println(i);class mathpublic int f(int x)if(x=1 | x=2)return 1;elsereturn f(x-1)+f(x-2);public boolean iszhishu(int x) for(int i=2;i<=x/2;i+)if (x % 2=0 )return false;return true;pub

25、lic boolean shuixianhua(int x) int i=0,j=0,k=0;i=x / 100;j=(x % 100) /10;k=x % 10;if(x=i*i*i+j*j*j+k*k*k)return true;elsereturn false;(4)题目:判断101-200之间有多少个素数,并输出所有素数。   1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,   则表明此数不是素数,反之是素数。   public class exp2public static void main(String args

26、)int i=0;math mymath = new math();for(i=2;i<=200;i+)if(mymath.iszhishu(i)=true)System.out.println(i); class mathpublic int f(int x)if(x=1 | x=2)return 1;elsereturn f(x-1)+f(x-2);public boolean iszhishu(int x)for(int i=2;i<=x/2;i+)if (x % 2=0 )return false;return true;(5)题目:打印出所有的 "水仙花数 &q

27、uot;,所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方5的三次方3的三次方。   1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。   public class exp2public static void main(String args)int i=0;math mymath = new math();for(i=100;i<=999;i+)if(mymath.shuixianhua(i)=true)ntln(i

28、); class mathpublic int f(int x)if(x=1 | x=2)return 1;elsereturn f(x-1)+f(x-2);public boolean iszhishu(int x)for(int i=2;i<=x/2;i+)if (x % 2=0 )return false;return true;public boolean shuixianhua(int x)int i=0,j=0,k=0;i=x / 100;j=(x % 100) /10;k=x % 10;if(x=i*i*i+j*j*j+k*k*k)return true;elseretur

29、n false; (6) 题目:打印出杨辉三角形(要求打印出10行如下图) 程序分析: 1 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 public class Ex33 public static void main(String args) int i,j; int a; a=new int88; for(i=0;i<8;i+) aii=1; ai0=1; for(i=2;i<8;i+) for(j=1;j<=i-1;j+) aij=ai-1j-1

30、+ai-1j; for(i=0;i<8;i+) for(j=0;j<i;j+) System.out.printf(" "+aij); System.out.println(); (7)题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。   1.程序分析:利用while语句,条件为输入的字符不为 'n '.   import java.util.Scanner;public class ex7 public static void main(String args) System.out.println(

31、"请输入字符串:"); Scanner scan=new Scanner(System.in); String str=scan.next(); String E1="u4e00-u9fa5" String E2="a-zA-Z" int countH=0; int countE=0; char arrChar=str.toCharArray(); String arrStr=new StringarrChar.length; for (int i=0;i<arrChar.length ;i+ ) arrStri=String.

32、valueOf(arrChari); for (String i: arrStr ) if (i.matches(E1) countH+; if (i.matches(E2) countE+; System.out.println("汉字的个数"+countH); System.out.println("字母的个数"+countE); (8)题目:求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 程序分析:关键是计算出每一项的值。   im

33、port java.io.*;public class Sumloop public static void main(String args) throws IOExceptionint s=0;String output=""BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in);System.out.println("请输入a的值");String input =stadin.readLine();for(int i =1;i<=Integer.p

34、arseInt(input);i+) output+=input; int a=Integer.parseInt(output); s+=a; System.out.println(s); (9)题目:一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=123.编程   找出1000以内的所有完数。   public class Wanshu public static void main(String args) int s; for(int i=1;i<=1000;i+) s=0; for(int j=1;j<i;j+) i

35、f(i % j=0) s=s+j; if(s=i)System.out.print(i+" "); System.out.println(); 【程序10】 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在   第10次落地时,共经过多少米?第10次反弹多高?   public class Ex10 public static void main(String args) double s=0; double t=100; for(int i=1;i<=10;i+) s+=t; t=t/2; System.out.pr

36、intln(s); System.out.println(t); (10)一个整数,它加上100后是一个完全平方数,加上168又是一个完全平方数,请问该数是多少?   1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:   public class test public static void main (Stringargs) long k=0; for(k=1;k<=100000l;k+) if(Math. floor(Math.sqrt(k+100)=Math.sqrt

37、(k+100) && Math. floor(Math.sqrt(k+168)=Math.sqrt(k+168) System.out.println(k); (11)题目:输入某年某月某日,判断这一天是这一年的第几天?   1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。   import java.util.*;public class test public static void main (Stringargs) int day=0;int month=0;int

38、 year=0;int sum=0;int leap; System.out.print("请输入年,月,日n"); Scanner input = new Scanner(System.in);year=input.nextInt();month=input.nextInt();day=input.nextInt();switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum

39、=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:System.out.println("data error");break; sum=sum+day; /*再加上某天的天数*/ if(year%400=0|(year%4=0&&year%100!=0)/*判断是不是闰年*/ leap=1; else

40、 leap=0; if(leap=1 && month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum+; System.out.println("It is the the day:"+sum);(12)题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个   第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下   的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。   1.程序分析:采取逆向思维的方法,从后往前推断。 

41、60; public class 猴子吃桃 static int total(int day) if(day = 10) return 1; else return (total(day+1)+1)*2; public static void main(String args)System.out.println(total(1);(13)打印出如下图案(菱形) * * * * * * * 程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。 三角形:public class StartG public static void

42、main(String args)int i=0;int j=0;for(i=1;i<=4;i+) for(j=1;j<=2*i-1;j+)System.out.print("*"); System.out.println(""); for(i=4;i>=1;i-) for(j=1;j<=2*i-3;j+) System.out.print("*"); System.out.println(""); 菱形:public class StartG public static void main

43、(String args) int i=0; int j=0; for(i=1;i<=4;i+) for(int k=1; k<=4-i;k+) System.out.print(" "); for(j=1;j<=2*i-1;j+) System.out.print("*"); System.out.println(""); for(i=4;i>=1;i-) for(int k=1; k<=5-i;k+) System.out.print(" "); for(j=1;j<=2*i-3;j+) System.out.print("*"); System.out.println(""); (14) 题目:求1+2!+3!+.+20!的和 1.程序分析:此程序只是把累加变成了累乘。 public class Ex21 static long sum = 0; static long fac = 0;public static void m

温馨提示

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

评论

0/150

提交评论