实验1对象和类.docx

上传人:b****5 文档编号:7901776 上传时间:2023-01-27 格式:DOCX 页数:14 大小:18.59KB
下载 相关 举报
实验1对象和类.docx_第1页
第1页 / 共14页
实验1对象和类.docx_第2页
第2页 / 共14页
实验1对象和类.docx_第3页
第3页 / 共14页
实验1对象和类.docx_第4页
第4页 / 共14页
实验1对象和类.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验1对象和类.docx

《实验1对象和类.docx》由会员分享,可在线阅读,更多相关《实验1对象和类.docx(14页珍藏版)》请在冰豆网上搜索。

实验1对象和类.docx

实验1对象和类

              成绩:

面向对象原理与Java实践课程实验报告

实验1:

对象和类

 

姓名__xxxx__

班级_xxxxxxxxxx__

学号__xxxxxxxxxxx__

实验地点__软件实验室_ 

实验时间_2010.03.23_

指导教师__xxxx 

 

 

面向对象原理与Java实践课程实验报告

实验1:

对象和类

一、实验目的:

●掌握类的定义及应用方法

●掌握对象的创建方法,了解实例变量、实例方法和静态字段的特性

●体会Java在类和对象的设计中体现的面向对象的思想

二、实验要求:

●预习Java中对象和类的基本概念和应用方法

●设计类时注意保证类的封装性

●编写程序完成以下实验内容并上交实验报告

三、实验内容:

  1、尝试两人合作编写程序,加深对方法的接口与实现的理解。

其中一人负责编写方法isPrime(),用于判断一个给定的正整数是否素数,另一个人负责编写主方法main(),利用isPrime()验证著名的哥德巴赫猜想:

任何比2大的偶数都可表示为两个素数之和。

(提示:

验证必须有上界,程序未调试成功之前应先选择一个较小的上界,调试成功后再换成较大的上界。

上界可由用户输入,否则应定义为一个符号常量。

2、设计一个简单的日期类Date,然后编写一个主程序演示该类的用法。

(提示:

一个日期至少具有年、月、日等属性,其行为有初始化、修改日期、返回描述日期的字符串、返回该日期的年、月、日等。

3、试设计一个带有四则运算的复数类,并编写主程序演示其用法。

(提示:

一个复数Complex由两部分组成:

实部realPart和虚部imaginaryPart,两个复数可进行加、减、乘、除四则运算。

四、设计思路:

1、1

用方法isPrime()来判断通过方法setPrime()输入的正整数是否是素数并输出明示,并编写main()方法调用方法setPrime()和方法isPrime()演示其功能。

1、2

用方法setPrime()实现输入的是正整数,用方法twoPrime()使输入为偶数并进而找出和为所输正偶数的素数对并输出,写出main()方法。

2

定义日期所用变量并进行初始化,定义修改日期的方法changeDate()用布尔变量flag来实现程序的结束与否,用displayDate()输出日期,用方法showTips()制出菜单,写出main()方法演示程序功能。

3

定义两个做运算的复数的实部和虚部,分别定义两个复数进行加运算的方法、减运算的方法、乘运算的方法和除运算的方法并用方法yunsuan()来实现它们,定义输出菜单的方法showTips(),并编写main()方法演示对复数的四则运算功能。

五、程序源代码:

1、1验证一个数是不是素数

importjava.util.InputMismatchException;

importjava.util.Scanner;

publicclassPrimeNumber{

privateintprime;

booleanflag=true;

protectedintsetPrime(){

Scanner_prime=null;

System.out.print("请输入要验证的正整数:

");

_prime=newScanner(System.in);

prime=_prime.nextInt();

if(prime<=0){

System.out.println(prime+"不是正整数,素数只能是正整数的,请再来一次!

");

setPrime();

}

returnprime;

}

protectedvoidisPrime(){

intmark=0;

for(inti=1;i<=prime;i++){

if(prime%i==0){

mark++;

}

}

if(mark>2){

System.out.println(prime+"不是素数!

");

}else{

System.out.println(prime+"是素数!

");

}

}

publicstaticvoidmain(String[]args){

PrimeNumberprimenumber=newPrimeNumber();

while(primenumber.flag){

try{

primenumber.setPrime();

primenumber.isPrime();

}catch(InputMismatchExceptionims){

System.out.println("您的输入与要求不一致,请确定后重新来过!

");

}

}

}

}

运行结果:

请输入要验证的正整数:

-4

-4不是正整数,素数只能是正整数的,请再来一次!

请输入要验证的正整数:

3

3是素数!

请输入要验证的正整数:

4

4不是素数!

请输入要验证的正整数:

1、2验证著名的哥德巴赫猜想

importjava.util.InputMismatchException;

importjava.util.Scanner;

publicclassGoldbach{

privateintprime;

booleanflag=true;

protectedintsetPrime(){

Scanner_prime=null;

System.out.print("请输入要验证的正整数:

");

_prime=newScanner(System.in);

prime=_prime.nextInt();

if(prime<=0){

System.out.print(prime+"不是正整数,素数只能是正整数的,请再来一次!

");

setPrime();

}

returnprime;

}

protectedvoidtwoPrime(){

if(prime%2!

=0){

System.out.println(prime+"不是偶数,这里需要输入偶数,请再来一次!

");

setPrime();

}

inti=1;

intnum=0;

while(i<=prime/2){

intmark1=0;

intmark2=0;

for(intj=1;j<=i;j++){

if(i%j==0){

mark1++;

}

}

for(intm=1;m<=(prime-i);m++){

if((prime-i)%m==0){

mark2++;

}

}

if(mark1==2&mark2==2){

num++;

System.out.println(prime+"="+i+"+"+(prime-

i));

}

i+=2;

}

System.out.print("共有"+num+"组");

}

publicstaticvoidmain(String[]args){

Goldbachgoldbach=newGoldbach();

while(goldbach.flag){

try{

goldbach.setPrime();

goldbach.twoPrime();

}catch(InputMismatchExceptionime){

System.out.print("您的输入与要求不一致,请确定后重新来过!

");

}

}

}

}

执行结果:

请输入要验证的正整数:

3

3不是偶数,这里需要输入偶数,请再

请输入要验证的正整数:

-5

-5不是正整数,素数只能是正整数的,请

44=3+41

44=7+37

44=13+31

共有3组请输入要验证的正整数:

2日期

importjava.util.InputMismatchException;

importjava.util.Scanner;

publicclassMyDate{

intyear;

intmonth;

intday;

intnum_order;//接受来自命令行的输入,int类型,只要负责showTips()的命令代号和日期的修改

booleanflag=true;//控制程序的退出,当flag=false时,退出

publicMyDate(){

year=2008;

month=8;

day=8;

}

//这个构造函数未用

publicMyDate(intyear,intmonth,intday){

this.year=year;

this.month=month;

this.day=day;

}

//showTips()用于提示用户相关操作代号

publicvoidshowTips(){

System.out.println("1修改年份");

System.out.println("2修改月份");

System.out.println("3修改日份");

System.out.println("4修改全部");

System.out.println("5退出修改");

}

publicvoidchangeDate(){

Scanner_order=newScanner(System.in);

System.out.print("请输入您的命令:

");

//下面的数字异常没有捕获

num_order=_order.nextInt();

if(num_order==1){

System.out.println("请输入新的年份:

");

year=_order.nextInt();

System.out.println();

}elseif(num_order==2){

System.out.println("请输入新的月份:

");

month=_order.nextInt();

System.out.println();

}elseif(num_order==3){

System.out.println("请输入新的日份:

");

day=_order.nextInt();

System.out.println();

}elseif(num_order==4){

System.out.println("请输入新的年份:

");

year=_order.nextInt();

System.out.println("请输入新的月份:

");

month=_order.nextInt();

System.out.println("请输入新的日份:

");

day=_order.nextInt();

System.out.println();

}

elseif(num_order==5){

flag=false;

System.out.println("程序结束");

}

}

publicvoiddisplayDate(){

if(month>=0&&month<=12&&day>=1&&day<=31){

System.out.println("目前的日期为:

"+year+"年"+month+"月"+day

+"日");

}else{

System.out.print("您的输入与设计情况不相符,请确认后重新来过!

");

}

showTips();

changeDate();

}

publicstaticvoidmain(String[]args){

MyDatemydate=newMyDate();

while(mydate.flag){

try{

mydate.displayDate();

}catch(InputMismatchExceptionime){

System.out.print("您的输入与要求不一致,请确定后重新来过!

");

mydate.changeDate();

}

}

}

}

运行结果:

目前的日期为:

2008年8月8日

1修改年份

2修改月份

3修改日份

4修改全部

5退出修改

请输入您的命令:

2

请输入新的月份:

12

目前的日期为:

2008年12月8日

1修改年份

2修改月份

3修改日份

4修改全部

5退出修改

请输入您的命令:

3一个带有四则运算的复数类

importjava.util.InputMismatchException;

importjava.util.Scanner;

publicclassComplex{

doublea1;

doubleb1;

doublea2;

doubleb2;

booleanflag=true;

Scanner_param=newScanner(System.in);

doubleparam;

publicComplex(){

super();

System.out

.println("首先要构造出两个复数,两个复数的形式如下:

\n"

+"comp1=a1+b1*i\n"

+"comp2=a2+b2*i\t(a1,a2,b1,b2∈R)");

System.out.println("下面要求输入四个参数(a1,b1,b1,b2)的值:

");

System.out.println("输入a1的值:

");

a1=_param.nextDouble();

System.out.println("输入b1的值:

");

b1=_param.nextDouble();

System.out.println("输入a2的值:

");

a2=_param.nextDouble();

System.out.println("输入b2的值:

");

b2=_param.nextDouble();

System.out.println("构造出两个复数的形式如下:

"

+"\n

(1)comp1="+a1+"+"+b1+"*i\n"

+"

(2)comp2="+a2+"+"+b2

+"*i");

}

publicvoidshowTips(){

System.out.println("1---加法运算\t");

System.out.println("2---减法运算\t");

System.out.println("3---乘法运算\t");

System.out.println("4---除法运算\t");

System.out.println("5---退出程序\t");

}

publicvoidyunsuan(){

Scanner_param=null;

showTips();

_param=newScanner(System.in);

System.out.println("请选择您要进行的操作:

");

param=_param.nextInt();

if(param==1){

add();

}elseif(param==2){

subtract();

}elseif(param==3){

multiply();

}elseif(param==4){

divide();

}elseif(param==5){

System.out.println("程序结束");

flag=false;

}else{

System.out.println("您输入的代号不是程序的代号,请确定后重新来过!

\n\n");

yunsuan();

}

}

publicvoidadd(){

System.out.println("加法运算的结果为:

comp="+(a1+a2)+"+"

+(b1+b2)+"*i");

System.out.println("此次的加法运算到此已完成!

");

}

publicvoidsubtract(){

System.out.println("减法运算的结果为:

comp="+(a1-a2)+"+"

+(b1-b2)+"*i");

System.out.println("此次的减法运算到此已完成!

");

}

publicvoidmultiply(){

System.out.println("乘法运算的结果为:

comp="+(a1*a2-b1*b2)+"+"

+(a1*b2+a2*b1)+"*i");

System.out.println("此次的乘法运算到此已完成!

");

}

publicvoiddivide(){

System.out.println("是comp1除以comp2还是comp2除以comp1,请做出选择!

");

System.out.println("1comp1除以comp2");

System.out.println("2comp2除以comp1");

System.out.println("请输入操作:

");

param=_param.nextInt();

if(param==1){

System.out.println("comp1和comp2除法运算的结果为:

comp="+(a1*a2-b1*b2)

/(a2*a2+b2*b2)+"+"+(a2*b1-a1*b2)

/(a2*a2+b2*b2)+"*i");

System.out.println("此次的除法运算到此已完成!

");

}elseif(param==2){

System.out.println("comp2和comp1除法运算的结果为:

comp="+(a1*a2-b1*b2)

/(a2*a2+b2*b2)+"+"+(a2*b1-a1*b2)

/(a2*a2+b2*b2)+"*i");

System.out.println("此次的除法运算到此已完成!

");

}

}

publicstaticvoidmain(String[]args){

Complexcomplex=newComplex();

while(complex.flag){

try{

complex.yunsuan();

}catch(InputMismatchExceptionime){

System.out.println("您的输入与要求不一致,请确定后重新来过!

");

}

}

}

}

运行结果:

首先要构造出两个复数,两个复数的形式如下:

comp1=a1+b1*i

comp2=a2+b2*i(a1,a2,b1,b2∈R)

下面要求输入四个参数(a1,b1,b1,b2)的值:

输入a1的值:

1

输入b1的值:

2

输入a2的值:

3

输入b2的值:

4

构造出两个复数的形式如下:

(1)comp1=1.0+2.0*i

(2)comp2=3.0+4.0*i

1---加法运算

2---减法运算

3---乘法运算

4---除法运算

5---退出程序

请选择您要进行的操作:

1

加法运算的结果为:

comp=4.0+6.0*i

此次的加法运算到此已完成!

1---加法运算

2---减法运算

3---乘法运算

4---除法运算

5---退出程序

请选择您要进行的操作:

六、实验过程中遇到的问题及解决手段:

刚开始对素数的判定问题不是很清楚,通过与同学之间的交流渐渐明白其基本思路,还有就是对有些语句的用法不是很熟通过看课本加深了理解。

七、本次实验的体会(结论):

通过本次试验我对java有了更深入的了解,熟悉了java有些语句的基本用法和java编程的一般过程,增加了java编程的兴趣,深刻体会到动手的重要性以及同学之间的交流的重要性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1