高级程序设计JAVA离线作业Word格式文档下载.docx
《高级程序设计JAVA离线作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《高级程序设计JAVA离线作业Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
Welcomtojavavorld"
);
}
2.编写一个JavaApplet,使之能够在浏览器中显示“WelcometoJavaAppletWorld!
”的串信息。
程序如下:
importjava.applet.*;
publicclassEx2_4extendsApplet{//anapplet
publicvoidpaint(Graphicsg){
g.drawString("
WelcometoJavaAppletWorld!
"
20,20);
3.Java语言有哪些主要特点?
1)平台无关性。
其独特的运行机制使得它具有良好的二进制级的可移植性,,利用Java,开发人员可编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维护和管理的开销。
2)面向对象。
3)安全稳定。
特有的“沙箱”机制是其安全性的保障。
4)支持多线程。
允许同一个程序有两个执行线索,满足一些复杂软件的需求。
5)简单易学。
去除C++中不容易理解和掌握的部分,同时保证它的基本语法部分与C语言几乎一模一样,降低学习难度。
第三章
习题:
1.编写程序输出用户指定数据的所有素数因子
publicclassEx3_15
try{
BufferedReaderin=newBufferedReader(
newInputStreamReader(System.in));
System.out.print("
请输入一个正整数:
"
Strings=in.readLine();
inta=Integer.parseInt(s);
System.out.println(a+"
的所有素因子包括:
for(inti=2;
i<
=a;
i++){
if(a%i==0&
&
isPrime(i)){
System.out.println(i);
}catch(IOExceptione){}
publicstaticbooleanisPrime(inta)//判断一个数是否是素数
if(a<
=1)returnfalse;
="
p="
style="
margin:
0px;
padding:
>
if(a%i==0)returnfalse;
returntrue;
2.编写一个Java程序,接受用户输入的一个1――12之间的整数(如果输入的数据不满足这个条件,则要求用户重新输入),利用switch语句输出对应的月份的天数。
importjava.util.Scanner;
publicclassxxx{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
Scannerscan=newScanner(System.in);
inti=scan.nextInt();
if(i<
1&
i>
12){
请重新输入月份"
i=scan.nextInt();
switch(i)
case1:
本月有31天"
break;
case2:
本月有29天"
case3:
case4:
Syste.out.println("
本月有30天"
case5:
case6:
case7:
case8:
System.out.println("
case9:
case10:
case11:
case12:
3.Java对标识符命名有什么规定,下面这些标识符哪些是对的?
哪些是错的,错在哪里?
(1)MyGame
(2)_isHers(3)2JavaProgram(4)Java-Visual-Machine(5)_$abc
标识符可以由编程者自由指定,但是需要遵循—定的语法规定。
标识符要满足如下的规定:
(1)标识符可以由字母、数字和下划线(_)、美元符号($)组合而成。
(2)标识符必须以字母、下划线或美元符号开头,不能以数字开头。
(3)标识符中区分大小写字母。
(4)在实际应用标识符时,应该使标识符能一定程度上反映它所表示的变量、常量、对象或类的意义,这样程序的可读性会更好。
题中的标识符中的(3)错误,不能以数字开头;
(4)错误,标识符中不能使用符号“-”。
(1)
(2)(5)正确。
第四章
1.有哪些访问控制符?
哪些可以用于修饰类,哪些用来修饰域和方法,试述不同访问控制符的作用。
访问控制符是指publi、private、protected等表示访问控制(AccessControl)的修饰符,其作用是更好地控制类及其域、方法的存取权限,更好地实现信息的封装与隐藏。
方法的访问控制符包括private、protected、public和“默认访问控制符”。
●public:
不同包之间可用public类;
主类必须是public类。
●private:
类中限定为private的成员(域或方法)只能被这个类本身访问,即私有访问控制。
●类中的成员缺省访问控制符时,称为缺省访问控制。
缺省访问控制的成员可以被这个类本身和同一个包中的类所访问,即包访问控制。
●protected:
类中限定为protected的成员可以被这个类本身,它的子类(包括同一个包中以及不同包中的子类)以及同一个包中所有其他的类访问。
类中限定为public的成员可以被所有的类访问。
●privateproteced:
Java中还有一种访问控制符为privateproteced,它限定能被本类及其子类可以访问,而包中的其他非子类的类不能访问。
类的访问控制符或者为public,或者缺省(但内部类可以有private、protected等访问控制符)。
如果类用public修饰,则该类可以被其他类所访问;
若类缺省访问控制符,则该类只能被同包中的类访问。
2.改写本节例子UsePhoneCard成为图形界面的Applet程序,接受用户输入的卡号,密码,金额和接入号码,创建PhoneCard类的对象并输出这张电话卡的有关信息。
UsePhoneCard.java
程序源代码说明
importjava.io
publicclassUsePhoneCard
UsePhoneCard
publicstaticvoidmain(Stringargs[])
{
PhoneCardmyCard=newPhoneCard(12345678,1234,50.0,"
300"
//创建对象并调用构造函数
//PhoneCard(longcn,intpw,doubleb,
//Strings)
System.out.println(myCard.toString());
}
classPhoneCard
PhoneCard
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;
connected=false;
returnfalse;
doublegetBalance()
if(connected)
returnbalance;
else
return-1;
voidperformDial()
balance-=0.5;
publicStringtoString()
Strings="
ConnectedPhoneNumber:
+connectNumber+
\nCardNumber:
+cardNumber+
\nCardPassword:
+password+
\nThebalance:
+balance;
if(connected)
return(s+"
\nThephoneisconnected"
return(s+"
\nThephoneisdisconnected"
第五章
1.什么是多态,多态有哪些方式?
多态性(Polymorphism来自希腊语,意思是多种形态)是指允许一个接口访问动作的通用类的性质。
一般地,多态性的概念常被解释为“一个接口,多种方法”。
这意味着可以为一组相关活动设计一个通用接口。
多态性允许用相同接口规定一个通用类来减轻问题的复杂度。
选择适当的动作(方法)适应不同环境的工作则留给编译器去做。
作为编程者,无需手工去做这些事情,只需利用通用接口即可。
多态的特点大大提高了程序的抽象程度和简洁性,更重要的是,它最大限度地降低了类和程序模块之间的耦合性,提高了类模块的封闭性,使得它们不需了解对方的具体细节,就可以很好地共同工作。
这个优点对于程序的设计、开发和维护都有很大的好处。
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的字符串形式
publicclassTest
publicstaticvoidmain(Stringargs[])
ComplexNumbercNumber_1=
newComplexNumber(3,-5);
ComplexNumber
cNumber_2=
newComplexNumber(2,2);
doubled=10.0;
System.out.println(cNumber_1.toString()+"
加"
+cNumber_2.toString()+"
等于"
+cNumber_plexAdd(cNumber_2).toString());
+d+"
等于"
+
cNumber_plexAdd(d).toString());
System.out.println();
减"
+cNumber_plexMinus(cNumber_2).toString());
cNumber_plexMinus(d).toString());
乘"
+cNumber_plexMulti(cNumber_2).toString());
cNumber_plexMulti(d).toString());
除"
+cNumber_2.toString()+
等于"
+cNumber_plexDivision(cNumber_2).toString());
cNumber_plexDivision(d).toString());
class
ComplexNumber
//域
privatedoublem_dRealPart;
privatedouble
m_dImaginPart;
//构造方法
ComplexNumber()
m_dRealPart=0.0;
m_dImaginPart=0.0;
ComplexNumber(doubler,doublei)
m_dRealPart=r;
m_dImaginPart=i;
ComplexNumber(ComplexNumber
c)
m_dRealPart=c.getRealPart();
m_dImaginPart=
c.getImaginaryPart();
//get,set方法
doublegetRealPart()
returnm_dRealPart;
doublegetImaginaryPart()
return
voidsetRealPart(doubled)
m_dRealPart=
d;
voidsetImaginaryPart(doubled)
//复数运算方法
//加
ComplexNumbercomplexAdd(ComplexNumber
returnnewComplexNumber(
this.m_dRealPart+
c.getRealPart(),
this.m_dImaginPart+
c.getImaginaryPart());
ComplexNumbercomplexAdd(doublec)
returnnewComplexNumber(
this.m_dRealPart+c,
this.m_dImaginPart);
//减
ComplexNumbercomplexMinus(ComplexNumber
this.m_dRealPart-
this.m_dImaginPart-
ComplexNumbercomplexMinus(doublec)
this.m_dRealPart-c,
//乘
ComplexNumbercomplexMulti(ComplexNumber
this.m_dRealPart*c.getRealPart()
-this.m_dImaginPart*c.getImaginaryPart(),
this.m_dRealPart*
c.getImaginaryPart()
+this.m_dImaginPart*
c.getRealPart());
ComplexNumbercomplexMulti(doublec)
newComplexNumber(
this.m_dRealPart*c,this.m_dImaginPart*
c);
//除
ComplexNumbercomplexDivision(ComplexNumberc){
newComplexNumber((this.m_dRealPart*c.getRealPart()
+this.m_dImaginPart*c.getImaginaryPart())
/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart()),
(this.m_dImaginPart*c.getRealPart()
-this.m_dRealPart*c.getImaginaryPart())
/(c.getRealPart()*c.getRealPart()+c.getImaginaryPart()*c.getImaginaryPart()));
ComplexNumbercomplexDivision(doublec){
returnnew
ComplexNumber(this.m_dRealPart/c,this.m_dImaginPart/c);
//toString()
public
StringtoString()
return"
("
+m_dRealPart+"
+"
m_dImaginPart+"
i"
)"
;
第六章
1.编写一个程序,要求能完成排序和查找,分别使用链表,数组和二叉树等数