java答案第五章
《Java语言程序设计-基础篇》答案-第05章
第5章 数组复习题5.1 答:(略)5.2 答:使用数组名和下标。
如:arrayName[index]5.3 答:声明数组时不为数组分配内存,使用new 运算符为数组分配内存。
输出结果: x is 60The size of numbers is 305.4 答:依次为:对、错、对、错5.5 答:有效的数组名分别是:d, f, r5.6 答:整数,05.7 答:a[2]5.8 答:出现下标越界错误,具体是:ArrayIndexOutOfBoundsException。
5.9 答:第3行改为:double[] r = new double[100]; 第5行的r.length()改为:r.length 第6行的r(i)改为:r[i]5.10 答:语句如下:int[] t = new int[source.length];System.arraycopy(source, 0, t, 0, source.length);5.11 答:不是修改数组大小,而创建一个新数组,并用myList 去引用。
5.12 答:不正确。
是将数组地址传递给方法形参。
5.13 答:输出如下:numbers is 0 and numbers[0] is 35.14 答:数组存放在堆(heap)中。
第2问参见P144图5-7。
5.15 - 5.18 (略)5.19 答:int[] matrix = new int[4][5];课后答案网ww w.kh da w .c om5.20 答:可以。
5.21 答:输出:array[0][1] is 2课后答案网ww w.kh da w .c om。
Java程序设计 第五章 测验答案 慕课答案 UOOC优课 深圳大学继续教育学院
第5章测验-5.1String类一、单选题 (共100.00分)1.编译及运行以下代码,下列选项哪个是正确的String s=new String("Bicycle");int iBegin=1;char iEnd=3;System.out.println(s.substring(iBegin,iEnd));A.输出BicB.输出icC.输出icyD.编译错误正确答案:B2.下面哪个是对字符串String的正确定义A.String s1=null;B.String s2='null';C.String s3=(String)'abc';D.String s4=(String)'\uface';正确答案:A3.字符串s=”Java”,找出字母v在字符串s中的位置,以下哪个选项是正确的A.mid(2,s);B.charAt(2);C.indexOf(s);D.s.indexOf('v');正确答案:D4.给出以下变量定义,以下哪个语句是正确的 String s1=new String("Hello");String s2=new String("there");String s3=new String();A.s3=s1 + s2;B.s3=s1 - s2;C.s3=s1 & s2;D.s3=s1 && s2;正确答案:A5.以下哪个方法可以返回字符串的长度:A.length()pareto()C.indexof()D.touppercase()正确答案:A。
Java参考答案(第5章)
矩形类定义如下:
public class Rectangle implementsEqualDiagonal//长方形类
{
protected double length; //长度
protected double width; //宽度
publicRectangle(double length,double width)
9.什么是接口,接口与抽象类有什么区别?
接口主要用于描述某一行为功能所包含的行为方法的基本概况,即方法的名称、返回值类型以及形式参数列表等,Java语言中的接口是一组常量和抽象方法的集合。接口提供了方法声明与方法实现相分离的机制,使多个类之间表现出共同的行为功能。
虽然抽象类中可以定义抽象方法,并且不能实例化对象,但是它还是属于类,具有类的一般性质,可以定义成员变量,也可以包含非抽象方法,而这些是不能在接口定义中出现的。
{
publicRectangle(double length)
{
this.length=length;
this.width=length;
}
public doublegetDiagonal()
{ return(System.math.sqrt(2)*length); }
}
5.接口定义如下:
public interfaceShape2D//平面图形接口
2.什么是类?什么是对象?它们之间的关系是怎样的?
类是对具有共性的实物的归类及其共性的概念抽象和属性与行为能力的描述,在面向对象的程序设计中,类是数据及数据操作的封装体。它是一种复杂的数据类型,不但包含数据,而且还包含了对数据进行操作的方法(Method)。通常人们将类中的数据称为成员变量,而操作数据的方法称为成员方法,二者统称为类的成员。
《Java程序设计》教材第五章练习题答案
习题一、选择题1. 面向对象程序设计的基本特征是(BCD)。
(多选)A.抽象B.封装C.继承D.多态2.下面关于类的说法正确的是(ACD)。
(多选)A.类是Java 语言中的一种复合数据类型。
B.类中包含数据变量和方法。
C.类是对所有具有一定共性的对象的抽象。
D.Java 语言的类只支持单继承。
上机指导1.设计银行项目中的注册银行用户基本信息的类,包括账户卡号、姓名、身份证号、联系电话、家庭住址。
要求是一个标准Java类(数据私有,提供seter/getter),然后提供一个toString方法打印该银行用户的信息。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\BankUser.java”2.设计银行项目中的帐户信息,包括帐户卡号、密码、存款,要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Account.java”3.设计银行项目中的管理员类,包括用户名和密码。
要求如“练习题1”。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Manager.java”4.创建一个Rectangle类。
添加两个属性width、height,分别表示宽度和高度,添加计算矩形的周长和面积的方法。
测试输出一个矩形的周长和面积。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Rectangle.java”5.猜数字游戏:一个类A有一个成员变量v,有一个初值100。
定义一个类,对A类的成员变量v进行猜。
如果大了则提示大了,小了则提示小了。
等于则提示猜测成功。
答:源代码请参见“CH05_LAB\src\com\inspur\ch05\Guess.java”6.编写一个Java程序,模拟一个简单的计算器。
定义名为Computer的类,其中两个整型数据成员num1和num1,编写构造方法,赋予num1和num2初始值,再为该类定义加、减、乘、除等公有方法,分别对两个成员变量执行加减乘除的运算。
《Java语言程序设计:基础篇》课后复习题答案-第五章
Chapter5Methods1.At least three benefits:(1)Reuse code;(2)Reduce complexity;(3)Easy to maintain.See the Sections5.2and5.3on how to declare and invoke methods.What is thesubtle difference between“defining a method”and“declaring a variable”?A declaration usually involvesallocating memory to store a variable,but a definitiondoesn’t.2.void3.Yes.return(num1>num2)?num1:num2;4.True:a call to a method with a void return type is always a statement itself.False:a call to a value-returning method is always a component of an expression.5.A syntax error occurs if a return statement is not used to return a value in a value-returning method.You can have a return statement in a void method,whichsimply exits the method.But a return statement cannot return a value such asreturn x+y in a void method.6.See Section5.2.puting a sales commission given the sales amount and the commission ratepublic static double getCommission(double salesAmount,doublecommissionRate)Printing a calendar for a monthpublic static void printCalendar(int month,int year)Computing a square rootpublic static double sqrt(double value)Testing whether a number is even and return true if it ispublic static boolean isEven(int value)Printing a message for a specified number of timespublic static void printMessage(String message,int times)Computing the monthly payment,given the loan amount,number of years,and annual interest rate.public static double monthlyPayment(double loan,intnumberOfYears,double annualInterestRate)Finding the corresponding uppercase letter given a lowercase letter.public static char getUpperCase(char letter)8.Line2:method1is not defined correctly.It does not have a return type or void.Line2:type int should be declared for parameter m.Line7:parameter type for n should be double to match method2(3.4).Line11:if(n<0)should be removed in method,otherwise a compile error is reported.9.public class Test{public static double xMethod(double i,double j){ while(i<j){j--;}return j;}}10.You pass actual parameters by passing the right type of value in the right order.The actual parameter can have the same name as its formal parameter.11."Pass by value"is to pass a copy of the value to the method.(A)The output of the program is0,because the variable max is not changed byinvoking the method max.(B)224248248162481632248163264(C)Before the call,variable times is3n=3Welcome to Java!n=2Welcome to Java!n=1Welcome to Java!After the call,variable times is3(D)12121421i is 512.Just before max is invoked.Space required for the main methodmax: 0Just entering max.Space required for the max methodmax: 0value2: 2 value1: 1Just before max is returnedSpace required for the main methodmax: 0Space required for the max methodmax: 2value2: 2 value1: 1 Space required for the main methodmax: 0Space required for the main methodmax: 0Right after max is returned13.Two methods with the same name,defined in the same class,is called method overloading.It is fine to have same method name,but different parameter types.You cannot overload methods based on return type,or modifiers.14.Methods public static void method(int x)and public static int method(int y)have the same signature method(int).15.Line 7:int n =1is wrong since n is already declared in the method signature.16.True17.(a)34+(int)(Math.random()*(55–34))(b)(int)(Math.random()*1000)(c)5.5+(Math.random()*(55.5–5.5))(d)(char)(‘a’+(Math.random()*(‘z’–‘a’+1))18.Math.sqrt(4)= 2.0Math.sin(2*Math.PI)=0Math.cos(2*Math.PI)=1Math.pow(2,2)= 4.0Math.log(Math.E)=1Math.exp(1)= 2.718Math.max(2,Math.min(3,4))=3 Math.rint(-2.5)=-2.0Math.ceil(-2.5)=-2.0Math.floor(-2.5)=-3.0Math.round(-2.5f)=-2Math.round(-2.5)=-2Math.rint(2.5)= 2.0Math.ceil(2.5)= 3.0Math.floor(2.5)= 2.0Math.round(2.5f)=3Math.round(-2.5)=-2Math.round(Math.abs(-2.5))=3。
Java课后题-第5章答案
一.程序设计题1.定义一个汽车类Car,要求如下:1)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型),并且所有属性为私有。
2)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
3)为私有属性提供访问器方法。
注意:汽车品牌一旦初始化之后不能修改。
定义测试类CarTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
public class Car{private String brand;private String color;private double speed;public Car(String brand,String color){this.brand=brand;this.color=color;}public String getColor(){return color;}public void setColor(String color){this.color=color;}public double getSpeed(){return speed;}public void setSpeed(double speed){this.speed=speed;}public String getBrand(){return brand;}}public class CarTest{public static void main(String[]args){Car c1=new Car("benz","black");}}2.定义一个图书类Book,要求如下:1)属性包括:书名name(String类型)、作者author(String类型),单价price(double类型),数量amount(int类型),并且所有属性为私有。
JAVA语言程序设计(第8版)第5章完整答案programming-exercises(程序练习题)答案完整版
5_1public class Exercise01 {public static void main(String[] args) {final int PENTAGONAL_NUMBERS_PER_LINE = 10;final int PENTAGONAL_NUMBERS_TO_PRINT = 100;int count = 1;int n = 1;while (count <= PENTAGONAL_NUMBERS_TO_PRINT) {int pentagonalNumber = getPentagonalNumber(n);n++;if (count % PENTAGONAL_NUMBERS_PER_LINE == 0)System.out.printf("%-7d\n", pentagonalNumber);elseSystem.out.printf("%-7d", pentagonalNumber);count++;}}public static int getPentagonalNumber(int n) {return n * (3 * n - 1) / 2;}}5_2import java.util.Scanner;public class Exercise02 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an interger: ");long number = input.nextLong();System.out.println("The sum of the digits in " + number + " is " + sumDigits(number));}public static int sumDigits(long n) {int sum = 0;long remainingN = n;do {long digit = remainingN % 10;remainingN = remainingN / 10;sum += digit;} while (remainingN != 0);return sum;}}第03题import java.util.Scanner;public class Exercise03 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an integer: ");int number = input.nextInt();//Display resultSystem.out.println("Is " + number + " a palindrome? " + isPalindrome(number));}public static boolean isPalindrome(int number) {if (number == reverse(number))return true;elsereturn false;}public static int reverse(int number) {int reverseNumber = 0;do {int digit = number % 10;number = number / 10;reverseNumber = reverseNumber * 10 + digit;} while (number != 0);return reverseNumber;。
Java基础第5章编程题答案
第五章编程题1.编写一个程序,实现字符串大小写的转换并倒序输出。
要求如下:(1)使用for循环将字符串“HelloWorld”从最后一个字符开始遍历。
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。
【参考答案】public class Chap5e {public static void main(String[] args) {String str="Hell5oWorld";char[] ch=str.toCharArray();StringBuffer s=new StringBuffer();for(int i=ch.length-1;i>=0;i--){if(ch[i]>='A'&&ch[i]<='Z')s.append(String.valueOf(ch[i]).toLowerCase());elseif(ch[i]>='a'&&ch[i]<='z')s.append(String.valueOf(ch[i]).toUpperCase());elses.append(String.valueOf(ch[i]));}System.out.print(s.toString());}}2. 利用Random类来产生5个20`30之间的随机整数并输出。
【参考答案】import java.util.Random;public class Chap5e {public static void main(String[] args) {Random r=new Random();for(int i=0;i<5;i++){System.out.println(r.nextInt(30-20+1)+20);}}}3. 编程. 已知字符串:”this is a test of java”.按要求执行以下操作:(1) 统计该字符串中字母s出现的次数(2) 取出子字符串”test”(3) 将本字符串复制到一个字符数组Char[] str中.(4) 将字符串中每个单词的第一个字母变成大写,输出到控制台。
java习题及答案第5章 习题参考答案
第5章习题解答1.使用抽象和封装有哪些好处?答:抽象是人们解决问题的基本手段,程序设计过程中需要对问题领域进行分析、设计中得出的抽象概念,然后封装成一些类。
封装也称为信息隐藏,是指利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。
系统的其他部分只有通过包裹在数据外面的被授权的操作来与这个抽象数据类型交流与交互。
也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口(对象名和参数)访问该对象。
把对象中相同或相似地地方抽象出来,从特殊到一半,从具体到抽象的过程,对象经过抽象得到类,类的实例化成了对象。
也可以高度抽象成接口,让不完全相同,但包含相同点的对象实现此接口,也就是利用多态实现。
把相同点抽象出来,抽象成此类或接口的方法、属性、字段等,封装就是隐藏某个对象的与其基本特性没有很大关系的所有详细信息的过程,就是将需要让其他类知道的暴露出来,不需要让其他类了解的全部隐藏起来,封装可以阻止对不需要信息的访问,我们可以使用访问指定符实现封装,也可以使用方法实现封装,可以将隐藏的信息作为参数或者属性值、字段指传给公共的接口或方法,以实现隐藏起来的信息和公开信息的交互。
封装的目的就是为了实现“高内聚,低耦合”。
高内聚就是类的内部数据操作细节自己完成,不允许外部干涉,就是这个类只完成自己的功能,不需要外部参与;低耦合,就是仅暴露很少的方法给外部使用。
2.构造方法的作用是什么?它与一般的成员方法在使用和定义方面有什么区别?答:构造方法用于生成一个对象实例,并对对象实例中的成员变量初始化。
当用new创建一个类的新的对象时,构造方法立即执行。
构造方法名字必须与类名相同。
3.Overload和Override的区别?答:方法重载(overloading)与方法覆盖(overriding)是实现多态性的基本手段,但两者的机制不同。
java答案第五章
"改变Pi=3.00圆的面积:"+c.area());
}
}
运行结果:
3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?
答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。
4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。
public class Circle implements Shape2D{
double radius;
public Circle(double r){radius=r;}
public double area(){return Pi*radius*radius;}
}
//A类(测试接口中隐含final的area()方法)
this.id=newid;
}
public void setname(String newname){
=newname;
}
public void setscoreOfenglish(float newscoreOfenglish){
this.scoreOfenglish=newscoreOfenglish;
//Student类
public class Student{
String id;
String name;
float scoreOfenglish;
float scoreOfmath;
float scoreOfcomputer;
float scoreOfsum;
//构造方法
public Student(){
Java第五章作业答案
习题六一、问答题1. 接口中能声明变量吗?不能,接口中只能定义抽象方法和常量2. 接口中能定义非抽象方法吗?不能3. 接口中的常量可以不指定初值吗?不能4.什么叫接口的回调?用实现接口的类创建对象,赋值给该接口声明的接口变量5.可以在接口中只声明常量,不声明抽象方法吗?可以6. 内部类的外嵌类的成员变量在内部类中有效吗?有效7. 内部类中的方法可以调用外嵌类中的方法吗?内部类可以访问外部类的成员,包括private成员。
外部类虽然不能直接访问内部类的成员, 但是可以通过内部类的实例访问内部类的成员。
8. 内部类的类体中可以声明类变量和类方法吗?静态内部类可以定义静态成员,非静态内部类不能定义静态成员。
9. 匿名类一定是内部类吗?一定二、选择题1.下列哪个叙述是正确的 DA. 一个类最多可以实现两个接口。
//一个类可以实现(implements)多个接口,就是Java中多继承现象。
B.如果一个抽象类实现某个接口,那么它必须要重写接口中的全部方法。
C.如果一个非抽象类实现某个接口,那么它可以只重写接口中的部分方法。
//实现某个接口的类如果不是抽象类,则该类必须实现接口中的所有抽象方法。
D.允许接口中只有一个抽象方法。
2.下列哪一个叙述是正确的? CA.和接口有关的匿名类可以是抽象类。
//匿名内部类不能是抽象类。
因为在创建匿名内部类的时候,会立即创建匿名内部类的对象。
B.和类有关的匿名类还可以额外地实现某个指定的接口。
C.和类有关的匿名类一定是该类的一个非抽象子类。
D.和接口有关的匿名类的类体中可以有static成员变量。
//匿名类是一个内部类,类体不可声明static成员变量和static方法3.下列接口中标注的(A,B,C,D)中,哪两个是错误的? ABinterface Takecare {protected void speakHello(); //A 接口中的方法都是public,不能是protectedpublic abstract static void cry(); //B 接口中的方法不能用static修饰int f(); //Cabstract float g(); //D}4.将下列(A,B,C,D)哪个代码替换下列程序中的【代码】不会导致编译错误。
JAVA语言程序的设计第8版第5章完整答案programmingexercises程序练习题答案完整版
5_1public class Exercise01 {public static void main(String[] args) {final int PENTAGONAL_NUMBERS_PER_LINE = 10;final int PENTAGONAL_NUMBERS_TO_PRINT = 100;int count = 1;int n = 1;while (count <= PENTAGONAL_NUMBERS_TO_PRINT) {int pentagonalNumber = getPentagonalNumber(n);n++;if (count % PENTAGONAL_NUMBERS_PER_LINE == 0)System.out.printf("%-7d\n", pentagonalNumber);elseSystem.out.printf("%-7d", pentagonalNumber);count++;}}public static int getPentagonalNumber(int n) {return n * (3 * n - 1) / 2;}}5_2import java.util.Scanner;public class Exercise02 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an interger: ");long number = input.nextLong();System.out.println("The sum of the digits in " + number + " is " + sumDigits(number));}public static int sumDigits(long n) {int sum = 0;long remainingN = n;do {long digit = remainingN % 10;remainingN = remainingN / 10;sum += digit;} while (remainingN != 0);return sum;}}第03题import java.util.Scanner;public class Exercise03 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an integer: ");int number = input.nextInt();//Display resultSystem.out.println("Is " + number + " a palindrome? " + isPalindrome(number));}public static boolean isPalindrome(int number) {if (number == reverse(number))return true;elsereturn false;}public static int reverse(int number) {int reverseNumber = 0;do {int digit = number % 10;number = number / 10;reverseNumber = reverseNumber * 10 + digit;} while (number != 0);return reverseNumber;}}第04题import java.util.Scanner;public class Exercise04 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an integer: ");int number = input.nextInt();//Display resultSystem.out.print("The reversal of " + number + " is ");reverse(number);}public static void reverse(int number) {int reverseNumber = 0;do {int digit = number % 10;number = number / 10;reverseNumber = reverseNumber * 10 + digit;} while (number != 0);System.out.println(reverseNumber);}}第05题import java.util.Scanner;public class Exercise05 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter three numbersSystem.out.print("Enter three numbers: ");double num1 = input.nextDouble();double num2 = input.nextDouble();double num3 = input.nextDouble();System.out.print(num1 + " " + num2 + " " + num3 + " in increasing order: ");displaySortedNumbers(num1, num2, num3);}public static void displaySortedNumbers(double num1, double num2, double num3) {double max = Math.max(Math.max(num1, num2), num3);double min = Math.min(Math.min(num1, num2), num3);double second = 0;if (num1 != max && num1 != min)second = num1;if (num2 != max && num2 != min)second = num2;if (num3 != max && num3 != min)second = num3;System.out.println(min + " " + second + " " + max);}}5.6import java.util.Scanner;public class Exercise06 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter an integerSystem.out.print("Enter an integer: ");int number = input.nextInt();displayPattern(number);}public static void displayPattern(int n) {int i;int j;for (i = 1; i <= n; i++) {for (j = 0; j < n - i; j++)System.out.print(" ");for (j = 0; j <= i - 1; j++)System.out.printf("%-5d", i - j);System.out.println();}}}5.7import java.util.Scanner;public class Exercise07 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter investment amountSystem.out.print("Enter the investment amount: ");double investmentAmount = input.nextDouble();//Prompt the user to enter interest rateSystem.out.print("Enter the annual interest rate: ");double annualInterestRate = input.nextDouble();//Prompt the user to enter yearsSystem.out.print("Enter number of years: ");int years = input.nextInt();System.out.println("\nThe amount invested: " + investmentAmount);System.out.println("Annual interest rate: " + annualInterestRate + "%");System.out.println("Years\tFuture Value");for (int i = 1; i <= years; i++) {System.out.print(i + "\t");System.out.printf("%10.2f\n",futureInvestmentValue(investmentAmount, annualInterestRate / 1200, i));}}public static double futureInvestmentValue(double investmentAmount, doublemonthInterestRate, int years) {return investmentAmount * Math.pow(1 + monthInterestRate, years * 12);}}5.8public class Exercise08 {public static void main(String[] args) {System.out.println("Celsius\tFahrenheit\tFahrenheit\tCelsius");for (double celsius = 40, fahrenheit = 120; celsius >= 31 && fahrenheit >= 30; celsius--, fahrenheit -= 10) {System.out.println(celsius + "\t" + (int)(celsiusToFahrenheit(celsius) * 100) / 100.0 + "\t\t" +fahrenheit + "\t\t" + (int)(fahrenheitToCelsius(fahrenheit) * 100) / 100.0);}}public static double celsiusToFahrenheit(double celsius) {return (9.0 / 5) * celsius + 32;}public static double fahrenheitToCelsius(double fahrenheit) {return (fahrenheit - 32) * 5.0 / 9;}}5.9public class Exercise09 {public static void main(String[] args) {System.out.println("Feet\tMeters\tMeters\tFeet");for (double feet = 1, meters = 20; feet <= 10 && meters <= 65; feet++, meters += 5) {System.out.println(feet + "\t" + (int)(footToMeter(feet) * 1000) / 1000.0 + "\t" +meters + "\t" + (int)(meterToFoot(meters) * 1000) / 1000.0);}}public static double footToMeter(double foot) {return foot * 0.305;}public static double meterToFoot(double meter) {return meter / 0.305;}}5.10public class Exercise10 {public static void main(String[] args) {int count = 0;int number = 1;for (number = 1; number < 10000; number++) {if (isPrime(number))count++;}System.out.println("The number of prime numbers less than 10000 is " + count);}public static boolean isPrime(int number) {for (int i = 2; i <= number / 2; i++) {if (number % i == 0)return false;}return true;}}5.11public class Exercise11 {public static void main(String[] args) {System.out.println("Sales Amount\tCommission");for (double salesAmount = 10000.0; salesAmount <= 100000; salesAmount += 5000) {System.out.println(salesAmount + "\t\t" + computeCommission(salesAmount));}}public static double computeCommission(double salesAmount) {if (salesAmount <= 5000)return salesAmount * 0.08;else if (salesAmount <= 10000)return 5000 * 0.08 + (salesAmount - 5000) * 0.10;elsereturn 5000 * 0.08 + (10000 - 5000) * 0.10 + (salesAmount - 10000) * 0.12;}}5.12public class Exercise12 {public static void main(String[] args) {char ch1 = '1';char ch2 = 'Z';int number = 10;printChars(ch1, ch2, number);}public static void printChars(char ch1, char ch2, int numberPerLine) { int count = 1;for (char i = ch1; i <= ch2; i++) {if (count % numberPerLine == 0)System.out.println(i);elseSystem.out.print(i + " ");count++;}}}5.13public class Exercise13 {public static void main(String[] args) {System.out.println("i\tm(i)");for (int i = 1; i <= 50; i++) {System.out.print(i + "\t");System.out.printf("%-10.4f\n", m(i));}}public static double m(int n) {double sum = 0;for (double i = n; i >= 1; i--)sum += i / (i + 1);return sum;}}5.14public class Exercise14 {public static void main(String[] args) {System.out.println("i\tm(i)");for (int i = 10; i <= 100; i += 10) {System.out.print(i + "\t");System.out.printf("%-10.5f\n", m(i));}}public static double m(int n) {double sum = 0;for (double i = n; i >= 0; i -= 2) {sum += 4 * (1 / (2 * i + 1) - 1 / (2 * (i + 1) + 1));}return sum;}}5.15public class Exercise15 {public static void main(String[] args) {System.out.println("Taxble Single Married Married Head of");System.out.println("Income Joint Separate a House");int taxableIncome;int status;for (taxableIncome = 50000; taxableIncome <= 60000; taxableIncome += 50) {System.out.printf("%-5d", taxableIncome);System.out.print(" ");for (status = 0; status <= 3; status++) {System.out.printf("%-5d", (int)computetax(status, taxableIncome));System.out.print(" ");}System.out.println();}}public static double computetax(int status, double taxableIncome) { double tax = 0;double income = taxableIncome;if (status == 0) {if (income <= 8350)tax = income * 0.10;else if (income <= 33950)tax = 8350 * 0.10 + (income - 8350) * 0.15;else if (income <= 82250)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (income - 33950) * 0.25;else if (income <= 171550)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (income - 82250) * 0.28;else if (income <= 372950)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 + (income - 171550) * 0.33;elsetax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (82250 - 33950) * 0.25 + (171550 - 82250) * 0.28 + (372950 - 171550) * 0.33 + (income - 372950) * 0.35;}else if (status == 1) {if (income <= 16700)tax = income * 0.10;else if (income <= 67900)tax = 16700 * 0.10 + (income - 16700) * 0.15;else if (income <= 137050)tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (income - 67900) * 0.25;else if (income <= 208850)tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (income - 137050) * 0.28;else if (income <= 372950)tax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (208850 - 137050) * 0.28 + (income - 208850) * 0.33;elsetax = 16700 * 0.10 + (67900 - 16700) * 0.15 + (137050 - 67900) * 0.25 + (208850 - 137050) * 0.28 + (372950 - 208850) * 0.33 + (income - 372950) * 0.35;}else if (status == 2) {if (income <= 8350)tax = income * 0.10;else if (income <= 33950)tax = 8350 * 0.10 + (income - 8350) * 0.15;else if (income <= 68525)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (income - 33950) * 0.25;else if (income <= 104425)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (income - 68525) * 0.28;else if (income <= 186475)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (104425 - 68525) * 0.28 + (income - 104425) * 0.33;elsetax = 8350 * 0.10 + (33950 - 8350) * 0.15 + (68525 - 33950) * 0.25 + (104425 - 68525) * 0.28 + (186475 - 104425) * 0.33 + (income - 186475) * 0.35;}else if (status == 3) {if (income <= 11950)tax = income * 0.10;else if (income <= 45500)tax = 11950 * 0.10 + (income - 11950) * 0.15;else if (income <= 117450)tax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (income - 45500) * 0.25;else if (income <= 190200)tax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (income - 117450) * 0.28;else if (income <= 372950)tax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (190200 - 117450) * 0.28 + (income - 190200) * 0.33;elsetax = 11950 * 0.10 + (45500 - 11950) * 0.15 + (117450 - 45500) * 0.25 + (190200 - 117450) * 0.28 + (372950 - 190200) * 0.33 + (income - 372950) *0.35;}return tax;}}5.16public class Exercise16 {public static void main(String[] args) {for (int year = 2000; year <= 2010; year++) {System.out.println("Year " + year + " has " + numberOfDaysInAYear(year) + " days.");}}public static int numberOfDaysInAYear(int year) {if (isLeapYear(year))return 366;elsereturn 365;}public static boolean isLeapYear(int year) {boolean isLeapYear = false;if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)isLeapYear = true;return isLeapYear;}}5.17import java.util.Scanner;public class Exercise17 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("Enter an integer number: ");int n = input.nextInt();printMatrix(n);}public static void printMatrix(int n) {for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++)System.out.print((int)(Math.random() * 2) + " ");System.out.println();}}}5.18public class Exercise18 {public static void main(String[] args) {System.out.println("Number\tSquareRoot");for (int i = 0; i <= 20; i += 2) {System.out.print(i + "\t ");System.out.printf("%6.4f\n", squareRoot(i));}}public static double squareRoot(int n) {return Math.sqrt(n);}}5.19import java.util.Scanner;public class Exercise19 {/*** main method*/public static void main(String[] args) {//Create a ScannerScanner input = new Scanner(System.in);//Prompt the user to enter three sides for a triangleSystem.out.print("Enter three sides for a triangle: ");double side1 = input.nextDouble();double side2 = input.nextDouble();double side3 = input.nextDouble();if (isValid(side1, side2, side3))System.out.println("The area of the triangle is " + area(side1, side2, side3));elseSystem.out.println("The input is invalid!");}/*** Returns true if the sum of any two sides is greater than the third side */public static boolean isValid(double side1, double side2, double side3) { boolean isValid = false;if (side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1) isValid = true;return isValid;}/*** Returns the area of the triangle*/public static double area(double side1, double side2, double side3) { double s = (side1 + side2 + side3) / 2;double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));return area;}}5.20public class Exercise20 {public static void main(String[] args) {System.out.println("Degree \tSin \tCos");for (int degree = 0; degree <= 360; degree = degree + 10) {System.out.print(degree + "\t ");System.out.printf("%6.4f\t ", sin(Math.toRadians(degree)));System.out.printf("%6.4f\n", cos(Math.toRadians(degree)));}}public static double sin(double radians) {return Math.sin(radians);}public static double cos(double radians) {return Math.cos(radians);}}5.21import java.util.Scanner;public class Exercise21 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter ten numbersSystem.out.print("Enter ten numbers: ");double n0 = input.nextDouble();double n1 = input.nextDouble();double n2 = input.nextDouble();double n3 = input.nextDouble();double n4 = input.nextDouble();double n5 = input.nextDouble();double n6 = input.nextDouble();double n7 = input.nextDouble();double n8 = input.nextDouble();double n9 = input.nextDouble();System.out.println("The mean is " + computeMean(n0, n1, n2, n3, n4, n5, n6, n7, n8, n9));System.out.println("The standard deviation is " + standardDeviation(n0, n1, n2, n3, n4, n5, n6, n7, n8, n9));}public static double computeMean(double n0, double n1, double n2, double n3, double n4, double n5, double n6, double n7, double n8, double n9) {return (n0 + n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9) / 10;}public static double standardDeviation(double n0, double n1, double n2, double n3, double n4, double n5, double n6, double n7, double n8, double n9) { double i = n0 * n0 + n1 * n1 + n2 * n2 + n3 * n3 + n4 * n4 + n5 * n5 + n6 * n6 + n7 * n7 + n8 * n8 + n9 * n9;double j = (n0 + n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9) * (n0 + n1 + n2 + n3 + n4 + n5 + n6 + n7 + n8 + n9);return Math.sqrt((i - j / 10) / (10 - 1));}}5.22import java.util.Scanner;public class Exercise22 {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print("Enter a number: ");double num = input.nextDouble();System.out.println("The approximate square root of " + num + " is " + approximateSquareRoot(num));}public static double approximateSquareRoot(double n) {double lastGuess = 1;double nextGuess = (lastGuess + (n / lastGuess)) / 2;while (Math.abs(nextGuess - lastGuess) > 0.0001) {lastGuess = nextGuess;nextGuess = (lastGuess + (n / lastGuess)) / 2;}return nextGuess;}}5.23public class Exercise23 {public static void main(String[] args) {final int NUMBERS_PER_LINE = 10;int count = 1;for (int i = 0; i < 100; i++) {if (count % NUMBERS_PER_LINE != 0)System.out.print(.jackfangqi.chapter05.examples.RandomCharacter.getRandomUp perCaseLetter() + " ");if (count % NUMBERS_PER_LINE == 0)System.out.println(.jackfangqi.chapter05.examples.RandomCharacter.getRandom UpperCaseLetter());count++;}count = 1;for (int i = 0; i < 100; i++) {if (count % NUMBERS_PER_LINE != 0)System.out.print(.jackfangqi.chapter05.examples.RandomCharacter.getRandomDi gitCharacter() + " ");if (count % NUMBERS_PER_LINE == 0)System.out.println(.jackfangqi.chapter05.examples.RandomCharacter.getRandom DigitCharacter());count++;}}}5.24public class Exercise24 {public static void main(String[] args) {showCurrentDate();showCurrentTime();}public static void showCurrentDate() {System.out.println("Current date is " + getMonthName() + " " + getCurrentDay() + ", " + getCurrentYear());}public static long totalNumberOfDays() {//Obtain the total milliseconds since midnight, Jan 1, 1970long totalMilliseconds = System.currentTimeMillis();long totalSeconds = totalMilliseconds / 1000;long totalMinutes = totalSeconds / 60;long totalHours = totalMinutes / 60;long totalDays = totalHours / 24;return totalDays;}public static int getCurrentYear() {long n = 0;int year = 1970;while (n <= totalNumberOfDays()) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))n += 366;elsen += 365;year++;}return year - 1;}public static long getRemainingDays() {long m = 0;for (int i = 1970; i < getCurrentYear(); i++) {if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0))m += 366;elsem += 365;}return totalNumberOfDays() - m;}public static int getCurrentMonth() {int j = 0;int i = 0;while (j <= getRemainingDays()) {i++;if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)j += 31;if (i == 4 || i == 6 || i == 9 || i == 11)j += 30;if (i == 2) {if (getCurrentYear() % 400 == 0 || (getCurrentYear() % 4 == 0 && getCurrentYear() % 100 != 0))j += 29;elsej += 28;}}return i;}public static String getMonthName() {String monthName = "";switch (getCurrentMonth()) {case 1: monthName = "January";break;case 2: monthName = "February";break;case 3: monthName = "March";break;case 4: monthName = "April";break;case 5: monthName = "May";break;case 6: monthName = "June";break;case 7: monthName = "July";break;case 8: monthName = "August";break;case 9: monthName = "September";break;case 10: monthName = "October";break;case 11: monthName = "November";break;case 12: monthName = "December";}return monthName;}public static long getCurrentDay() {int j = 0;for (int i = 1; i < getCurrentMonth(); i++) {if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)j += 31;if (i == 4 || i == 6 || i == 9 || i == 11)j += 30;if (i == 2) {if (getCurrentYear() % 400 == 0 || (getCurrentYear() % 4 == 0 && getCurrentYear() % 100 != 0))j += 29;elsej += 28;}}return getRemainingDays() - j + 1;}public static void showCurrentTime() {//Obtain the total milliseconds since midnight, Jan 1, 1970long totalMilliseconds = System.currentTimeMillis();//Obtain the total seconds since midnight, Jan 1, 1970long totalSeconds = totalMilliseconds / 1000;//Compute the current second in the minute in the hourlong currentSecond = totalSeconds % 60;//Obtain the total minuteslong totalMinutes = totalSeconds / 60;//Compute the current minute in the hourlong currentMinute = totalMinutes % 60;//Obtain the total hourlong totalHours = totalMinutes / 60;//Compute the current hourlong currentHour = totalHours % 24 + 8;System.out.println("Current time is "+currentHour+":"+currentMinute+":"+currentSecond+" (GMT+8)");}}5.25import java.util.Scanner;public class Exercise25 {public static void main(String[] args) {Scanner input = new Scanner(System.in);//Prompt the user to enter millisecondsSystem.out.print("Enter milliseconds: ");long milliseconds = input.nextLong();System.out.print(milliseconds + " is " + convertMillis(milliseconds));}public static String convertMillis(long millis) {//Obtain the total secondslong totalSeconds = millis / 1000;//Compute the remaining secondslong remainingSeconds = totalSeconds % 60;//Obtain the total minuteslong totalMinutes = totalSeconds / 60;//Compute the remaining minuteslong remainingMinutes = totalMinutes % 60;//Obtain the total hourslong totalHours = totalMinutes / 60;return totalHours + ":" + remainingMinutes + ":" + remainingSeconds;}}5.26public class Exercise26 {public static void main(String[] args) { int countOfPalindromicPrimes = 0;int count = 1;int i = 2;while (countOfPalindromicPrimes < 100) { if (isPrime(i) && isPalindrome(i)) {if (count % 10 != 0)System.out.printf("%6d ", i);elseSystem.out.printf("%6d\n", i);count++;countOfPalindromicPrimes++;}i++;}}public static boolean isPrime(int m) {boolean isPrime = true;for (int j = 2; j <= m / 2; j++) {if (m % j == 0) {isPrime = false;break;}}return isPrime;}public static boolean isPalindrome(int n) { if (n == reverse(n))return true;elsereturn false;}public static int reverse(int n) {int reverseNumber = 0;do {int digit = n % 10;n = n / 10;reverseNumber = reverseNumber * 10 + digit;} while (n != 0);return reverseNumber;}}5.27public class Exercise27 {public static void main(String[] args) {int countOfEmirps = 0;int countOfEmirpsPerLine = 1;int i = 2;while (countOfEmirps < 100) {if (isPrime(i) && isNonpalindrome(i) && isPrime(reverse(i))) { if (countOfEmirpsPerLine % 10 != 0)System.out.printf("%4d ", i);elseSystem.out.printf("%4d\n", i);countOfEmirps++;countOfEmirpsPerLine++;}i++;}}public static boolean isPrime(int n) {boolean isPrime = true;for (int i = 2; i <= n /2; i++) {if (n % i == 0) {isPrime = false;break;}}return isPrime;}public static boolean isNonpalindrome(int n) {if (n == reverse(n))return false;elsereturn true;}public static int reverse(int n) {int reversal = 0;do {int digit = n % 10;n = n / 10;reversal = reversal * 10 + digit;} while (n != 0);return reversal;}}5.28public class Exercise28 {public static void main(String[] args) {System.out.println("p\t2^p - 1");for (int p = 2; p <= 31; p++) {if (isPrime(Math.pow(2, p) - 1))System.out.println(p + "\t" + (Math.pow(2, p) - 1));}}public static boolean isPrime(double n) {boolean isPrime = true;for (int i = 2; i <= n /2; i++) {if (n % i == 0) {isPrime = false;break;}}return isPrime;}}5.29public class Exercise29 {public static void main(String[] args) {//Generate two random numbers between 1 and 6int i = (int)(Math.random() * 6 + 1);int j = (int)(Math.random() * 6 + 1);if (isCraps(i, j))System.out.println("You rolled " + i + " + " + j + " = " + sum(i, j) + "\nYou lose");if (isNatural(i, j))System.out.println("You rolled " + i + " + " + j + " = " + sum(i, j) + "\nYou win");if (isPoint(i, j))point(i, j);}public static int sum(int n, int m) {return n + m;}public static boolean isCraps(int i, int j) {boolean isCraps = false;if (sum(i, j) == 2 || sum(i, j) == 3 || sum(i, j) == 12)isCraps = true;return isCraps;}public static boolean isNatural(int i, int j) {boolean isNatural = false;if (sum(i, j) == 7 || sum(i, j) == 11)isNatural = true;return isNatural;}public static boolean isPoint(int i, int j) {boolean isPoint = false;if (!isCraps(i, j) && !isNatural(i, j))isPoint = true;return isPoint;}public static void point(int i, int j) {int point = sum(i, j);System.out.println("You rolled " + i + " + " + j + " = " + point + "\npoint is " + point);//Generate two random numbers between 1 and 6i = (int)(Math.random() * 6 + 1);j = (int)(Math.random() * 6 + 1);if (sum(i, j) == 7)System.out.println("You rolled " + i + " + " + j + " = " + sum(i, j) + "\nYou lose");if (sum(i, j) == point)System.out.println("You rolled " + i + " + " + j + " = " + sum(i, j) + "\nYou win");while (sum(i, j) != 7 && sum(i, j) != point) {i = (int)(Math.random() * 6 + 1);j = (int)(Math.random() * 6 + 1);System.out.println("You rolled " + i + " + " + j + " = " + sum(i, j));if (sum(i, j) == 7)System.out.println("You lose");if (sum(i, j) == point)System.out.println("You win");}}}5.30public class Exercise30 {public static void main(String[] args) {for (int i = 2; i < 1000; i++) {if (isPrime(i) && isPrime(i + 2))System.out.println("(" + i + ", " + (i + 2) + ")");}}。
解析JAVA程序设计第五章课后答案
第5章习题解答1.流的主要特征有哪些,用流来实现JAVA中的输入输出有什么优点?答: 一是单向性,即数据只能从数据源流向数据宿;二是顺序性,先从数据源流出的数据一定比后流出的数据先到达数据宿;三是数据流必须而且只能和一个数据源与一个数据宿相连。
优点是体现了面向对象程序设计的概念,通过流可以把对不同类型的输入/输出设备的操作统一为用流来实现。
2.对字节流和字符流进行读写操作的一般步骤是什么?答:声明流对象,创建流对象,通过流对象进行读(写)操作,关闭流对象。
3. 有哪些常用的字节流和字符流,他们的主要区别是什么?答: InputStream/OutputStrem:普通字节流,所有字节流的基类。
FileInputStream/ FileOutputStream:用于从文件中读写数据。
BufferedInputStream/ BufferedOutputStream:用于从缓冲区输入流中读写数据。
采用缓冲区流可减少实际上从外部输入设备上读写数据的次数,从而提高效率。
DataInputStream/ DataOutputStream:按读写数据对象的大小从字节流中读写数据,而不是象其它字节流那样以字节为基本单位。
PipedInputStream/ PipedOutputStream:管道输流用于从另一个线程中读写数据。
4.么是异常?说明Java中的异常处理机制?试述JAVA中异常的抛出和传递过程?答: 异常是程序设计语言提供的一种机制,它用于在程序运行中的非常规情况下,控制程序对非常规情况进合理的处理。
Java提供了try-catch-finally语句来对异常进行处理。
先按照正常顺序执行try子句中的语句,若在执行过程中出现异常,则try子句中还未被执行的语句将再也不会被执行。
而程序控制立即转移到catch子句,将发生的异常与catch子句中的异常进行匹配,若找到一个匹配,就执行该catch子句中的语句。
JAVA期末复习题及答案——第五章
JAVA期末复习题及答案——第五章一.填空题1.Java不直接支持多继承,但可以通过接口实现多继承。
2.任何一个Java程序都默认引入了一个包,这个包的名字叫做java. lang 。
使用已经存在的类定义作为基础建立新的类定义,这样的技术叫做_类的继承__3.用来实现接口的关键字是 implements 。
4. 对象替换原则是指父类的句柄可以指向子类的对象。
5.子类继承父类使用关键字extends6.一个类中如果存在一个或多个抽象方法,那么这个类是一个抽象类。
7.抽象类中可以(“可以”或者“不可以”)不存在抽象的方法,可以(“可以”或者“不可以”)存在非抽象的方法。
8.接口中的属性的默认修饰符为 public static final ,接口中方法的默认修饰符为 public abstract 。
二.选择题1.用来引入已定义好的类或包的语句是:BA、mainB、importC、public classD、class2.下列叙述中,错误的是: DA、父类不能替代子类B、子类能够替代父类C、子类继承父类D、父类包含子类3.程序执行的结果(C)public class Test {String name="Tom";public Test(String name){name=name;}public static void main(String [] args){Test t = new Test("Jack");System.out.println();}}A 编译有错B JackC TomD 以上答案都不对4.在 Java 中,关于static关键字的说法错误的是(D)A static 可以修饰方法B static 可以修饰变量C static 可以修饰代码块D static 修饰的方法,在该方法内部可以访问非静态的类成员变量5.关于 Java 中继承的特点,下列说法正确的是(B)A 使类的定义复杂化B Java 只支持单继承,不可多继承,但可以通过实现接口来达到多继承的目的C 子类继承父类的所有成员变量和方法,包括父类的构造方法D 不可以多层继承,即一个类不可以继承另一个类的子类6.程序的执行结果是(D)public class Test {public static void main(String [] args){Child c = new Child();}}class Father{public Father(){System.out.println("父类无参构造函数");}public Father(String name){System.out.println("父类有参构造函数");}}class Child extends Father{public Child(){this("dd");System.out.println("子类无参构造函数");}public Child(String name){super("dd");System.out.println("子类有参构造函数");}}A 子类无参构造函数子类有参构造函数父类无参构造函数B 子类有参构造函数子类无参构造函数父类无参构造函数C 父类无参构造函数子类有参构造函数子类无参构造函数D 父类有参构造函数子类有参构造函数子类无参构造函数三.判断题1.在进行类的继承时,一个子类只能有一个父类,一个父类也只能有一个子类。
(完整word版)数据机构第五章——java语言描述 第5章 树与二叉树习题参考答案
习题五参考答案备注: 红色字体标明的是与书本内容有改动的内容一、选择题1.对一棵树进行后根遍历操作与对这棵树所对应的二叉树进行( B )遍历操作相同。
A.先根 B. 中根 C. 后根 D. 层次2.在哈夫曼树中,任何一个结点它的度都是( C )。
B.0或1 B. 1或2 C. 0或2 D. 0或1或23.对一棵深度为h的二叉树,其结点的个数最多为( D )。
A.2h B. 2h-1 C. 2h-1 D. 2h-14.一棵非空二叉树的先根遍历与中根遍历正好相同,则该二叉树满足( A )A.所有结点无左孩子 B. 所有结点无右孩子C. 只有一个根结点D. 任意一棵二叉树5.一棵非空二叉树的先根遍历与中根遍历正好相反,则该二叉树满足( B )B.所有结点无左孩子 B. 所有结点无右孩子C. 只有一个根结点D. 任意一棵二叉树6.假设一棵二叉树中度为1的结点个数为5,度为2的结点个数为3,则这棵二叉树的叶结点的个数是( C )A.2 B. 3 C. 4 D. 57.若某棵二叉树的先根遍历序列为ABCDEF,中根遍历序列为CBDAEF,则这棵二叉树的后根遍历序列为( B )。
A.FEDCBA B. CDBFEA C. CDBEFA D. DCBEFA8.若某棵二叉树的后根遍历序列为DBEFCA,中根遍历序列为DBAECF,则这棵二叉树的先根遍历序列为( B )。
A.ABCDEF B. ABDCEF C. ABCDFE D. ABDECF9.根据以权值为{2,5,7,9,12}构造的哈夫曼树所构造的哈夫曼编码中最大的长度为( B )A.2 B. 3 C. 4 D. 510.在有n个结点的二叉树的二叉链表存储结构中有( C )个空的指针域。
A.n-1 B. n C. n+1 D. 0二、填空题1.在一棵度为m的树中,若度为1的结点有n1个,度为2的结点有n2个,……,度为m的结点有n m2.一棵具有n3.一棵具有1004.以{5,9,12,13,20,30}5.有m6.若一棵完全二叉树的第4层(根结点在第0层)有7个结点,则这棵完全二叉树的结点总7.在深度为k的完全二叉树中至少有 k个结点,至多有8.对一棵树转换成的二叉树进行先根遍历所得的遍历序列为ABCDEFGH,则对这棵树进行9.10.并四、算法设计题1.编写一个基于二叉树类的统计叶结点数目的成员函数。
java第五章习题及答案
1.Internet/Intranet Server(服务器),客户端
2.初始化、启动、停止、退出
3.事件
4.ActionEvent,ActionListener,actionPerformed(ActionEvent e)
5.CheckboxGroup,Checkbox,Choice,List,ItemEvent
result.setText(j.toString(i));
}
catch(ArithmeticException ee){
result.setText("divided by zero");
}
}
}
class clearL implements ActionListener{
public void actionPerformed(ActionEvent e){
TextField result=new TextField(10);
Label la1=new Label("first data:");
Label la2=new Label("second data:");
Label la3=new Label("equal:");
Button plus=new Button("+");
二.选择题:
4.b5.A6.A7.a
二.编程题:
1.
importjava.applet.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassExampleextendsAppletimplementsActionListener{
JAVA 练习题第5章对象和类
)。 (A)内部类不能有自己的成员方法和成员变量 (B)内部类可用private或protected修饰符修饰 (C)内部类可以作为其他类的成员,而且可访问 它所在的类的成员 (D)除static内部类外,不能在类内声明static成 员
【解析】内部类也可以有自己的成员方法和变量。
答案为 A
函数。
super
2.类与对象的关系是( )。
答案为 A
(A)类是对象的抽象 (B)对象是类的抽象 (C)对象是类的子类 (D)类是对象的具体实例
3.下面哪一个是Java中不合法的标识符( )。
(A)$persons (C)_myVar
(B)twoNum (D)*pointFra bibliotek答案为 D
答案为 D
4.区分类中重载方法的依据是( A.形参列表的类型和顺序 B.不同的形参名称 C.返回值的类型不同 D.访问权限不同
)。
【解析】形参表的类型和顺序不同时区分重载方法的
唯一标志。
答案为 A
5.子类对象能否直接向其父类赋值?父类对象能否向其子类赋值?
( ) A.能,能 B.能,不能 C.不能,能 D.不能,不能 值给子类对象。
据成员。
答案为 C
4.有一个类B,下面为其构造方法的声明,正确 【解析】构造方法没有类型,且方法名与类名相同。
的是( )。 (A)void B(int x) (B)B(int x) {} (C)b(int x) {} (D)void b(int x) {}
{}
答案为 B
答案为 B
在创建对象时必须( )
A、先声明对象,然后才能使用对象 B、先声明对象,为对象分配内存空间,然后才能 使用对象 C、先声明对象,为对象分配内存空间,对对象初 始化,然后才能使用对象 D、上述说法都对
java课后习题答案
java课后习题答案java课本课后习题答案第五章继承、接口与泛型1、子类在什么情况下可以继承父类的友好成员?答:父子类在同一包中时子类可以继承父类的友好成员。
2、子类通过什么办法,可以隐藏继承的成员变量。
答:子类成员变量与父类成员变量同名。
3、子类重写继承方法的规则是什么?答:重写隐藏父类的方法需:返回的数据类型相同,参数的个数相同,并且类型相同。
如果重写父类的方法后参数的个数或类型不同会出现子类方法的重载。
4.子类的构造方法的第一条语句是什么?答:如果需要调用父类构造方法,则应是用super关键词调用父类的构造方法。
5、子类一旦重写了继承的方法,就会隐藏继承的方法。
是这样吗?答:不一定。
在参数的个数或类型不同时会产生重载。
如果只有返回值的类型不同,将会产生编译错误。
(5)子类隐藏父类的方法,参数必须______相同并且__________相同.答:个数,类型6、子类重写继承方法时,可以降低方法的权限吗?答:重写继承方法时不能降低访问权限。
7、简述关键字super的用法。
答:1)子类调用父类的构造方法。
2)子类对象引用被隐藏了的父类方法,或成员变量。
8.假设父类有一个方法:Public double f(double x, double y){return x+y;}是否允许子类再声明如下的方法:Public float f(double x, double y){return 23;}答:不允许。
9、父类的final方法可以被子类重写吗?答:不可以10、什么类中可以有abstract方法?答:被abstract修饰的类。
接口中也可以有abstract方法11、什么叫做对象的上转型对象?答:用子类的构造方法构造出来的对象,赋值给父类对象。
12、什么叫接口回调?答:用实现接口的类创建的对象,赋值给该接口声明的接口变量。
13、与类有关的匿名类一定是该类的子类吗?与接口有关的匿名类一定是实现该接口的一个类吗?答:一定,因为类创建对象时,除了构造方法还有类体,此类体被认为是该类的一个子类去掉类声明后的类体。
Java课后习题答案第五章
char c[] = {'O','l','y','m','p','i','c',' ','G','a','m','e','s'};
rever(c);
System.out.println(c);
}
public static void rever(char c[]){char t;
for(int i=0,j=c.length-1;i<j;i++,j--)
import java.io.*;
public class Test
{ public static void main(String[] args)
{ int i,a=0,s=0;
System.out.print("请输入数a:");
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
{
sum+=x[i];
}
System.out.println("平均数:"+sum/10);
}
}
17.利用数组输入6位大学生3门课程的成绩,然后计算
(1)每个大学生的总分;
(2)每门课程的平均分;
import java.io.*;
public class Scores
{
public static void main(String[] args)throws IOException
java程序设计项目教程第五章答案
参考答案:
1.A 2.A3.C 4.B5.B6.B7.A8.B9.A10.C
二、填空题
参考答案:
1.swing2.布局管理器3.setLayout()4.mouseRelease
5.适配器6.ActionListener7.事件事件源8.JMenu
三、编程
1.设计如图样式的图形用户界面(不要求实现功能)。
JTextField t2=newJTextField("57",3);
JTextField t3=newJTextField("59",3);
JTextField t4=newJTextField(3);
JTextField t5=newJTextField(3);
JTextField t6=newJTextField(3);
JButton answerButton;
JButton questionButton;
JButton scoreButton;
public TestPanel()
{
setLayout(new BorderLayout());
JPanel northPanel=new JPanel();
northPanel.setLayout(new GridLayout(2,1));
JLabel b5 = newJLabel("闹钟时间:");
JLabel b6 = newJLabel("时");
JLabel b7= newJLabel("分");
JLabel b8 = newJLabel("秒");
JLabel b9 = newJLabel("闹钟设置");
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)在主方法中声明Student类的数组(含五个元素)
(2)生成五个对象存入数组:其中三个Student类的对象、一个StudentXW类的对象、一个StudentBZ类的对象。
(3)将方法testScore()发送给数组的每一个元素,输出结果,并分析具体执行的是哪一个类中的方法。
}
}
//test5_4
public class test5_4 {
public static void main(String[] args){
new B().fuck().fuck();
}
}
运行结果:
5.声明一个具有内部类的类,此内部类只有一个非默认的构造方法;声明另外一个具有内部类的类,此内部类继承第一个内部类。
//A类接口
public interface A{
void fuck();
}
//B类
public class B{
public A fuck(){
return new A(){
public void fuck(){
"B类声明实现A接口类并返回接口的应用——Fuck you!");
}
};/*注意这里有分号“;”*/
与抽象类不同的是:接口允许在看起来不相干的类之间定义共同行为。
2.试编程证明接口中的属性都隐含为static及final,所有的方法都为public。
//定义接口Shape2D
interface Shape2D{
double Pi=3.14;
double area();
}
//Circle类继承接口Shape2D
public class A extends Shape2D{
public double area();
}
//test5_2
public class test5_2{
public static void main(String args[]){
Circle c=new Circle(10);
"Pi=3.14圆的面积:"+c.area());
//A类
public class A {
public String Way1(){return "A的方法1和"+Way2();}
public String Way2(){return "A的方法2";}
}
//B类
public class B extends A{
public String Way2(){
}
public Student(String aid,String aname,float ascoreOfenglish,float ascoreOfmath,float ascoreOfcomputer){
this.id=aid;
=aname;
this.scoreOfenglish=ascoreOfenglish;
//A类
class A{
class ClassOfA{
public ClassOfA(){
}
}
}
//B类
public class B{
class ClassOfB extends A.ClassOfA{
public ClassOfB(A b){
b.super();
}
}
}ห้องสมุดไป่ตู้
6.声明一个具有两个方法的类,在第一个方法中调用第二个方法。声明此类的一个子类,并在子类中重写第二个方法。生成一个子类的对象,并将其塑型为基类,调用第一个方法,解释会发生什么?
return "B的方法2";
}
}
// test5_6
public class test5_6 {
public static void main(String args[]){
A a=new B();
;
}
}
7.什么是多态?如何实现多态?
答:多态性是指不同类型的对象可以响应相同的消息。利用向上塑性技术,一个父类的应引用变量可以指向不同的子类对象;而利用动态绑定技术,可以再运行时根据父类引用变量所指对象的世纪类型执行相应的子类方法,从而实现多态性。
SetPi b=new SetPi(3.00);
"改变Pi=3.00圆的面积:"+c.area());
}
}
运行结果:
3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?
答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。
4.声明一个接口,此接口至少具有一个方法;在一个方法中声明内部类实现此接口,并返回此接口的引用。
this.scoreOfmath=ascoreOfmath;
this.scoreOfcomputer=ascoreOfcomputer;
//this.scoreOfsum=ascoreOfenglish+ascoreOfmath+ascoreOfcomputer;
this.scoreOfsum=sum();
Java语言程序设计
第五章课后习题答案
1.什么是接口?接口起什么作用?接口与抽象类有何区别?
答:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
作用:接口是面向对象的一个重要机制,使用接口可以实现多态继承;接口中的所有方法都是抽象的,这些抽象方法由实现这一接口的不同类型来具体;接口还可以用来实现不同类之间的常量共享。
public class Circle implements Shape2D{
double radius;
public Circle(double r){radius=r;}
public double area(){return Pi*radius*radius;}
}
//A类(测试接口中隐含final的area()方法)
//Student类
public class Student{
String id;
String name;
float scoreOfenglish;
float scoreOfmath;
float scoreOfcomputer;
float scoreOfsum;
//构造方法
public Student(){
}
//sum方法
public float sum(){
return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer);