高级程序设计JAVA离线作业选.docx

上传人:b****1 文档编号:2462577 上传时间:2023-05-03 格式:DOCX 页数:14 大小:19.56KB
下载 相关 举报
高级程序设计JAVA离线作业选.docx_第1页
第1页 / 共14页
高级程序设计JAVA离线作业选.docx_第2页
第2页 / 共14页
高级程序设计JAVA离线作业选.docx_第3页
第3页 / 共14页
高级程序设计JAVA离线作业选.docx_第4页
第4页 / 共14页
高级程序设计JAVA离线作业选.docx_第5页
第5页 / 共14页
高级程序设计JAVA离线作业选.docx_第6页
第6页 / 共14页
高级程序设计JAVA离线作业选.docx_第7页
第7页 / 共14页
高级程序设计JAVA离线作业选.docx_第8页
第8页 / 共14页
高级程序设计JAVA离线作业选.docx_第9页
第9页 / 共14页
高级程序设计JAVA离线作业选.docx_第10页
第10页 / 共14页
高级程序设计JAVA离线作业选.docx_第11页
第11页 / 共14页
高级程序设计JAVA离线作业选.docx_第12页
第12页 / 共14页
高级程序设计JAVA离线作业选.docx_第13页
第13页 / 共14页
高级程序设计JAVA离线作业选.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

高级程序设计JAVA离线作业选.docx

《高级程序设计JAVA离线作业选.docx》由会员分享,可在线阅读,更多相关《高级程序设计JAVA离线作业选.docx(14页珍藏版)》请在冰点文库上搜索。

高级程序设计JAVA离线作业选.docx

高级程序设计JAVA离线作业选

《高级程序设计JAVA》课程作业(选做)

 

第一章

1.简述面向过程问题求解和面向对象问题求解的异同。

答:

两者都是运用计算机来解决一定问题而制作的软件程序。

1)中心思想不同。

前者是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。

后者是以具体的解题过程为研究和实现的主体。

2)核心组成不同。

数据结构、算法是面向过程问题求解的核心组成。

对象、类与实体是对象问题求解的核心组成。

3)解决方法不同。

前者将现实世界的问题抽象成计算机可以理解和处理的数据结构,后者是要让计算机逻辑来模拟现实世界的物理存在,让计算机世界向现实世界靠拢。

2.面向对象的程序设计方法有哪些优点?

答:

1)可重用性,一个软件项目中所开发的模块,能够不仅限于在这个项目中使用,而且可以重复地使用在其他项目中,从而在多个不同的系统中发挥作用。

2)可扩展性,对现代应用软件提出的又一个重要要求,即要求应用软件能够很方便、容易地进行扩充和修改,这种扩充和修改的范围不但涉及到软件的内容,也涉及到软件的形式和工作机制。

可扩展性使得面向对象程序设计法特别适合于在快速原型的软件开发方法中使用,也体现它对模块化技术的更有效的支持。

3)可管理性,面向对象的开发方法采用内涵比过程和函数丰富、复杂得多的类作为构建系统的部件,使整个项目的组织更加合理、方便。

 

第二章

1.编写一个Java Application,利用JDK软件包中的工具编译并运行这个程序,在屏幕上输出“WelcometoJavaWorld!

”。

importjava.io.*;

publicclassMyJavaExcerciseApplication

{

publicstaticvoidmain(Stringargs[])

{

System.out.println("WelcometoJavaWorld!

");

}endofmainmethod

}endofclass

2.编写一个JavaApplet,使之能够在浏览器中显示“WelcometoJavaAppletWorld!

”的串信息。

HTML文件名为ZYAppletInclude.html内容为:

3.Java语言有哪些主要特点?

答:

–完全面向对象:

所有设计都必须在类中实现,一个Java程序就是多个类的集合。

–可靠性:

提供严密的语法规则,在编译和运行时严格检查错误;自动资源回收机制,减小了内存出错的可能性。

–安全性:

良好的安全模型;摈弃了其它语言的不安全成份。

–分布式:

直接支持分布式的网络应用,可实现高效的网络编程

–多线程:

提供环境级和语言级的多线程支持,提高了程序执行的并发度,提高系统执行效率。

–平台无关性:

借助虚拟机,程序不经修改即可在不同硬件或软件平台上运行。

第三章

习题:

1.编写程序输出用户指定数据的所有素数因子

packagetest;

publicclassPrimeNumber{

privatestaticStringisPrime(intnumber){

Stringprime="";

inti=2;

for(;i

booleanisT=true;

for(intm=2;m

if(i%m==0){

isT=false;

}

}

if(number%i==0&&isT){

prime=prime+i+",";

}

}

returnprime;

}

publicstaticvoidmain(String[]args){

System.out.println("用户指定30的所有素数因子为:

"+isPrime(30));

}

}

 

2.编写一个Java程序,接受用户输入的一个1――12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应的月份的天数。

packagetest;

importjava.io.*;

publicclassTest{

publicstaticvoidmain(String[]args){

System.out.print("请输入一个1-12之间的数字:

");

intnum=0;

try{

BufferedReaderbr=newBufferedReader(

newInputStreamReader(System.in));

num=Integer.parseInt(br.readLine());

}

catch(java.lang.NumberFormatExceptionnfe){

System.out.println("输入的不是数字!

");

}

catch(Exceptionex){

ex.printStackTrace();

}

if(num<0||num>12){

System.out.println("对不起你输入的不合法,请重新输入:

");

}

switch(num){

case1:

System.out.println(num+"月份有"+31+"天");

break;

case2:

System.out.println(num+"月份有"+29+"天");

break;

case3:

System.out.println(num+"月份有"+31+"天");

break;

case4:

System.out.println(num+"月份有"+30+"天");

break;

case5:

System.out.println(num+"月份有"+31+"天");

break;

case6:

System.out.println(num+"月份有"+30+"天");

break;

case7:

System.out.println(num+"月份有"+31+"天");

break;

case8:

System.out.println(num+"月份有"+31+"天");

break;

case9:

System.out.println(num+"月份有"+30+"天");

break;

case10:

System.out.println(num+"月份有"+31+"天");

break;

case11:

System.out.println(num+"月份有"+30+"天");

break;

case12:

System.out.println(num+"月份有"+31+"天");

break;

}

}

}

3.Java对标识符命名有什么规定,下面这些标识符哪些是对的?

哪些是错的,错在哪里?

(1)MyGame

(2)_isHers(3)2JavaProgram(4)Java-Visual-Machine(5)_$abc

答:

Java对标识符的定义有以下规定:

(1)标识符可以由字母、数字和两个特殊字符下划线(_)、美元符号($)组合而成。

(2)标识符必须以字母、下划线或美元符号开头。

(3)标识符中区分大小写字母。

(4)应该使标识符能一定程度上反映它所表示的变量、常量、对象或类的意义。

(1)正确的:

(1)、MyGame

(2)、_isHers(5)_$abc

错误的:

(3)2JavaProgram,不能以数字开头、(4)Java-Visual-Machine,标识符中不能使用符号“—”。

 

第四章

1.有哪些访问控制符?

哪些可以用于修饰类,哪些用来修饰域和方法,试述不同访问控制符的作用。

答:

类的访问控制符有一个:

public

域和方法的访问控制符有四个:

public,private,protected,privateprotected,另外还有一种没有定义专门访问控制符的缺省情况

●public:

不同包之间可用public类;主类必须是public类

●缺省访问控制符:

该类只能被同一个包内的类访问,又称包访问性

●private:

域和方法只能被该类自身访问

●protected:

域和方法能被三种类访问:

自身,同一包中的其他类,其它包中的该类的子类

privateprotected:

域和方法能被二种类访问:

自身,该类的所有子类(同一包或其它包)

2.改写本节例子UsePhoneCard成为图形界面的Applet程序,接受用户输入的卡号,密码,金额和接入号码,创建PhoneCard类的对象并输出这张电话卡的有关信息。

publicclassUsePhoneCard

{

publicstaticvoidmain(Stringargs[])

{

PhoneCardmyCard=newPhoneCard(12345678,1234,50.0,"300");

System.out.println(myCard.toString());

}

}

classPhoneCard

{

longcardNumber;

privateintpassword;

doublebalance;

StringconnectNumber;

booleanconnected;

PhoneCard(longcn,intpw,doubleb,Strings)

{

cardNumber=cn;

password=pw;

if(b>0)

balance=b;

else

System.exit

(1);

connectNumber=s;

connected=false;

}

booleanperformConnection(longcn,intpw)

{

if(cn==cardNumber&&pw==password)

{

connected=true;

returntrue;

}

else

{

connected=false;

returnfalse;

}

}

doublegetBalance()

{

if(connected)

returnbalance;

else

return-1;

}

voidperformDial()

{

if(connected)

balance-=0.5;

}

publicStringtoString()

{

Strings="ConnectedPhoneNumber:

"+connectNumber+

"\nCardNumber:

"+cardNumber+

"\nCardPassword:

"+password+

"\nThebalance:

"+balance;

if(connected)

return(s+"\nThephoneisconnected");

else

return(s+"\nThephoneisdisconnected");

}

}

第五章

习题:

1.什么是多态,多态有哪些方式?

答:

多态性:

有封装性和继承所引出来的面向对象程序设计的另一特性

方法覆盖实现多态,方法重载实现多态,对象引用的多态

多态方式:

●子类对父类方法的覆盖

●利用重载在同一个类中定义多个同名的不同方法

 

2.什么是接口?

答:

接口是用来组织应用中的各类并调用它们的相互关系的一种结构,是实现类间多重继承功能的结构

将完成特定功能的若干属性组织成相对独立的属性集合,该属性集合就是接口,接口是用来实现类间多重继承的功能的,接口定义的仅仅是实现某一特定功能 的一组功能的对外接口和规范,而并没有真正实现这个功能,真正实现在继承这个接口的各个类中完成,因而通常把接口功能的继承称为“实现”。

3.根据下面的要求编程实现复数类ComplexNumber

(1)复数类ComplexNumber的属性

m_dRealPart:

实部,代表复数的实数部分

m_dImaginPart:

 虚部,代表复数的虚数部分

(2) 复数类ComplexNumber的方法

ComplexNumber() 构造函数,将实部,虚部都置为0

ComplexNumber(doubler,doubleI) 构造函数,创建复数对象的同时完成复数的实部,虚部的初始化

GetRealPart() 获取实部

GetImaginaryPart() 获取虚部

SetRealPart(doubled) 设置实部

SetImaginaryPart(doubled) 设置虚部

ComplexAdd(ComplexNumberc) 复数相加

ComplexAdd(doublec) 复数相加

ComplexMinus(ComplexNumberc) 复数相减

ComplexMinus(doublec) 复数相减

ComplexMulti(ComplexNumberc) 复数相乘

ComplexMulti(doublec) 复数相乘

ToString() 把当前复数对象的实部,虚部组合成a+bi的字符串形式

答:

classComplexNumber

{

doublem_dRealPart;

doublem_dImaginPart;

ComplexNumber()

{

m_dRealPart=0;

m_dImaginPart=0;

}

ComplexNumber(doubler,doublei)

{

m_dRealPart=r;

m_dImaginPart=i;

}

doublegetRealPart()

{

returnm_dRealPart;

}

doublegetImaginaryPart()

{

returnm_dImaginPart;

}

voidsetRealPart(doubled)

{

m_dRealPart=d;

}

voidsetImaginaryPart(doubled)

{

m_dImaginPart=d;

}

ComplexNubercomplexAdd(ComplexNuberc)

{

c.m_dRealPart+=m_dRealPart;

c.m_dImaginPart+=m_dImaginPart;

returnc;

}

ComplexNubercomplexAdd(doublec)

{

m_dRealPart+=c;

returnthis;

}

ComplexNubercomplexMinus(ComplexNuberc)

{

c.m_dRealPart-=m_dRealPart;

c.m_dImaginPart-=m_dImaginPart;

returnc;

}

ComplexNubercomplexMinus(doublec)

{

m_dRealPart-=c;

returnthis;

}

ComplexNubercomplexMulti(ComplexNuberc)

{

c.m_dRealPart=c.m_dRealPart*this.m_dRealPart-c.m_dImaginPart*this.m_dImaginPart;

c.m_dImaginPart=this.m_dImaginPart*c.m_dRealPart+this.m_dRealPart*c.m_dImaginPart;

returnc;

}

ComplexNubercomplexMulti(doublec)

{

m_dRealPart=c.m_dRealPart*this.m_dRealPart;

m_dImaginPart=this.m_dRealPart*c.m_dImaginPart;

returnthis;

}

voidtoString()

{

return(m_dRealPart+”+”+m_dImaginPart+”i”);

}

}

 

第六章

1.编写一个程序,要求能完成排序和查找,分别使用链表,数组和二叉树等数据结构,比较各种方法的优缺点。

答:

根放在0位置,以后假定当前位置是i,那么左子结点在2i+1,右子结点在2i+2。

比如根的左子结点在1,右子结点在2。

结点1的左子结点在3,右子结点在4。

定义一种空值表示没有子结点,比如empty。

假定一个结点由3个成员组成:

value,left,right

数组假定是全局的,如果不是可以作为参数传送。

递归实现比较简单:

voidbtree2array(node,index)

{

if(node==NULL)

array[index]=empty;

array[index]=node->value;

btree2array(node->left,index*2+1);

btree2array(node->right,index*2+2);

}

开始调用:

btree2array(root,0);

 

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2