《Java语言程序设计(一)》课后习题答案(课程编号04747)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java语⾔程序设计(⼀)》课后习题答案(课程编号04747)
第⼀章 Java语⾔基础 (5)
1.1 指出JA V A语⾔的主要特点和JA V A程序的执⾏过程。

(5)
1.2 说出开发与运⾏JA V A程序的重要步骤。

(5)
1.3 如何区分应⽤程序和⼩应⽤程序? (5)
1.4 说出JA V A源⽂件的命名规则。

(5)
1.6 JA V A语⾔使⽤什么字符集?共有多少个不同的字符? (5)
1.7 JA V A语⾔标识符的命名规则是什么? (6)
1.8 JA V A有那些基本数据类型,它们的常量⼜是如何书写的? (6)
1.9 指出下列内容哪些是JA V A语⾔的整型常量,哪些是浮点数类型常量,哪些两
者都不是。

(6)
第⼆章运算和语句 (7)
2.1 Java的字符能参加算术运算吗? (7)
2.2 占字节多的变量能直接赋值给占字节少的变量么? (7)
2.3 试⽤Java语⾔表达式描述以下数学计算式或逻辑条件: (7)
2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,
变量a、b和c的值。

(7)
2.6 若⼀个数恰好等于它的因⼦之和,则这个数称为“完全数”。

编写程序求1000
之内的所有完全数。

(7)
2.7 编写输⼊正实数x,求平⽅不超过x的最⼤整数n,并输出。

(8)
2.8 输⼊正整数n,输出由n⾏n列星号字符组成的三⾓形图案。

(11)
2.9 设有整型变量x和y的值分别为5和110。

试指出执⾏了以下循环语句后,变
量x和y的值分别多少? (12)
2.10求⼩于999的所有⽔仙花数。

(12)
2.11 编程序解百鸡问题:鸡翁⼀,值钱五;鸡母⼀,值钱三;鸡雏三,值钱⼀。

百钱买百鸡。

求鸡翁、鸡母和鸡雏各⼏何? (13)
2.12 编写程序,按下⾯的公式计算⾃然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+......
(13)
2.13 编写程序,⽤如下公式计算圆周率PI的近似值:PI=4-4/3+4/5-4/7+4/9-4/11...
(14)
2.14 回⽂整数是指正读法和反读相同的整数,编写⼀个程序,输⼊⼀个整数,判
断他是否为回⽂整数。

(15)
2.15 草地上有⼀堆野果,有⼀只猴⼦每天吃掉这堆野果的⼀半⼜⼀个,5天后刚好
吃完这堆野果,求这堆野果原来共有多少个?猴⼦每天吃多少个野果? (17)
第三章⾯向对象编程基础 (19)
3.1 什么是⾯向对象技术?它有什么优点? (19)
3.2 ⾯向对象程序设计与⾯向过程程序设计有什么区别? (19)
3.3 程序中类和对象有什么区别? (19)
3.4 类变量和实例变量,以及类⽅法和实例⽅法的区别。

(19)
3.5 ⼦类能继承超类的哪些成员变量和⽅法? (19)
3.6 ⼦类在什么情况下能隐藏超类的成员变量和⽅法? (20)
3.7 在⼦类中是否允许有⼀个⽅法和超类的⽅法名字相同,⽽类型不同? (20)
3.12 以下程序有什么错误? (20)
3.13 声明⼀个复数类Complex。

实现其基本功能。

(20)
3.14 声明⼀个有理数类RationalNum。

要求提供有理数的四则运算,以分数形式输出有理数和以浮点数形式输出有理数等⽅法。

(23)
第四章数组和字符串 (28)
4.1 举例说明如何声明、创建和初始化数组。

(28)
4.2 举例说明如何声明、创建和初始化数组。

(28)
4.3 ⼀个数组能够存储不同类型的元素吗? (28)
4.4 编写⼀个Java 程序,形成以下形式的⼆维数组,并输出。

(28)
4.5 java中的字符数组与字符串有什么区别? (30)
4.6 确定⼀个字符数组长度与确定⼀个String对象的长度有什么不同? (30)
4.7⽤toUpperCase()和toLowerCase()⽅法实现⼤⼩写转换 (30)
4.8编写⼀个程序通过连接两个字符串得到⼀个新字符串并输出。

(31)
4.9 声明MyDate类,功能:增加1天,增减1⽉和增加1年的⽅法;输出MyDate
对象⽇期的⽅法;求两个MyDate对象⽇期差的⽅法。

并提供能⽤当前⽇期初始化MyDate类对象的构造⽅法。

(31)
4.10 求前n个质数。

要求确定m是否是质数,⽤早先求出的质数对m的整除性来
确定。

(34)
4.11 编写实现从两个字符串中找出最长的相同字符列的代码。

(35)
4.12 整理字符串,将字符串的前导空⽩符和后随空⽩符删去,并将字符串中⾮空⽩字符之间的连接的多个空⽩符只保留⼀个,⽽去掉多余的空⽩符。

(36)
4.13 编写⽤数组实现⼤整数的类,提供⼤整数的加、减、乘等运算。

(36)
第五章图形界⾯设计 (43)
5.1 Swing与AWT有何关系? (43)
5.2 什么是组件对象?什么是容器?容器与其他类型的组件有何不同? (44)
5.3 以下程序中,有多少个组件,哪些既是组件⼜是容器? (44)
5.4 什么是事件?什么是监听器?如何进⾏事件注册? (44)
5.5 如何进⾏事件处理?如何获取事件源? (44)
5.6 编写已个⼩应⽤程序,⼩应⽤程序窗⼝有⼀个按钮,点击这个按钮时,点击按钮的次数会显⽰在按钮上。

(44)
5.7 创建⼀个有⽂本框和三个按钮的程序。

当按下某个按钮时,使不同的⽂字显⽰在⽂本框中。

(45)
5.8 编写⼀个有两个⽂本框的⼩应⽤程序,在第⼀个⽂本框输⼊英语单词,在第⼆个⽂本框会⾃动显⽰汉语解释;在第⼀个⽂本框输⼊汉语单词,在第⼆个⽂本框中显⽰英语解释。

设英语单词表只有少许⼏个。

(47)
5.9 ⼀个标签、⼀个⽂本框、⼀个⽂本区、两个按钮。

当在⽂本区中输⼊若⼲数后,点击求和按钮,在⽂本框显⽰输⼊数的和,标签显⽰“输⼊数的和”;点击求平均值按钮,在⽂本框显⽰输⼊数的平均值,标签显⽰“输⼊数的平均值”。

要求⽂本区设有滚动条。

(49)
5.10 布局设计 (51)
第六章图形界⾯设计 (54)
6.1 设计⼀个⾯板,该⾯板中有四个运动项⽬选择框和⼀个⽂本区。

当某个选择项⽬被选中时,在⽂本区中显⽰该选择项⽬。

(54)
6.2 设计⼀个⾯板,该⾯板中有四个运动项⽬单选框和⼀个⽂本框。

当某个选择项⽬被选中时,在⽂本框中显⽰该选择项⽬。

(55)
6.3 设计⼀个⾯板,该⾯板中有四个运动项⽬单选按钮和⼀个⽂本框。

当某个选择项⽬被选中时,在⽂本框中显⽰该选择项⽬。

(57)
6.4 设计⼀个窗⼝,取默认布局BorderLayout布局。

北⾯添加⼀个列表,有4门课
程选项。

中⼼添加⼀个⽂本区,当选择列表中的某门课程后,⽂本区显⽰相应课程的介绍;(JList没有addActionListener⽅法) (59)
6.5 设计⼀个窗⼝,取默认布局BorderLayout布局,北⾯添加⼀个组合框,组合框有多门课程选项。

中⼼添加⼀个⽂本框,当在组合框中选定⼀门课程后,⽂本框显⽰相应课程。

(61)
6.6 设计⼀个JFrame窗⼝,窗⼝中⼼添加⼀个⽂本区。

另添加4个菜单,每个菜
单都有菜单项,每个菜单项都有对应快捷键,选择某个菜单项时,窗⼝中⼼的⽂本区显⽰相应信息。

(62)
6.7 设计⼀个窗⼝,窗⼝有两个依赖于它的对话框,⼀个对话框负责求园的⾯积;另⼀个负责求三⾓形的⾯积。

窗⼝中⼀个菜单负责打开这两个对话框。

⼏个图形的数据通过对话框输⼊。

(66)
6.8 设计⼀个JFrame窗⼝。

(69)
6.9 设计⼀个窗⼝,窗⼝中有⼀个⽂本框。

程序对键盘输⼊进⾏监视,当输⼊⼀个整数和回车字符时,在⽂本框输⼊1⾄该整数的数列和;如果中间输⼊⾮数字的其
他字符,在⽂本框中显⽰输⼊错误,重新输⼊的字样。

(72)
6.10 编写⼀个演⽰⿏标拖动和移动的程序。

界⾯设有⼀个⽂本区,当⿏标拖动或移动时,在⽂本区中输出指明⿏标拖动或⿏标移动,及⿏标位置的字样。

(73)
第七章图形、图像和多媒体 (75)
7.1 编写⼀个应⽤程序,绘制⼀个五⾓星。

(75)
7.2 ⽤Graphics2D绘制⼀条抛物线,设抛物线⽅程的系数从图形界⾯输⼊。

(76) 7.3 利⽤Graphics2D的平移,缩放,旋转功能。

绘制⼀个六⾓星。

(80)
7.4 编写画图程序。

(82)
7.5 输⼊⼆次曲线的系数,画出⼆次曲线 (87)
7.6. 写⾳乐播放器,只能播放wav,mid格式的。

(92)
第⼋章多线程 (97)
8.1建⽴线程有哪两种⽅法? (97)
8.2怎样设置线程的优先级? (97)
8.3编写程序,⼀个画圆,⼀个画椭圆。

(97)
8.4在多线程程序中,要考虑互斥的原因是什么?在Java中如何解决? (100)
8.5在多线程程序中,要考虑同步的原因是什么?在Java中如何解决? (100)
8.6模拟排队买票,球票5元,购票者持有5,10,20,50元的,售票员⼿⾥开始没有零钱。

(100)
8.7修改例8.5程序,使⼀些暂时找不到零钱等待的顾客能按照先来先买的规则,排队等待购买纪念品。

(107)
第九章输⼊和输出流 (116)
9.2⼀个⽂本,⼀个按钮。

在⽂本区中输⼊数据,点击按钮,将⽂本内容输出到⽂件。

⽂件通过⽂件保存对话框制定。

(116)
9.3在⼀个⽂件中,每⾏存的是整数,各⾏整数个数不等,要求读这个⽂件,然后计算每⾏整数的和,并存到另⼀个⽂件中。

(118)
9.4在⼀个⽂本区中输⼊数据,把输⼊的数据分析成各个单词,然后排序显⽰到第⼆个⽂本区中,并通过⽂件保存对话框保存到⽂件中。

(121)
9.5在⼀个⽂本区中输⼊数据,将⽂本区中的数据存⼊⽂件中,在⼜⽤户指定的序号,程序从⽂件中读取对应序号数据,输出到⽂本框中。

(123)
9.6⼀个⽂本区,⼀个按钮,点击按钮选择⽂件,然后⼜把⽂件中的内容输⼊到⽂本区中。

(126)
第⼗章⽹络与数据库编程基础 (129)
10.1程序中,⽤何种对象存储IP地址和域名? (129)
10.2⽤代码⽰意程序获取域名和IP地址的⽅法。

(129)
10.3URL的作⽤是什么? (129)
10.4URLConnection对象的作⽤是什么? (129)
10.5由代码⽰意由⽹址读取⽹页内容的过程。

(129)
10.6⽹络编程可分哪些层次? (130)
10.7分别说出socket连接和serverSocket连接的⽅法。

(130)
10.8说出java程序与数据库连接的⽅法。

(130)
10.9 Connection对象的作⽤是什么? (130)
10.10 ResultSet对象的作⽤是什么? (130)
10.11如何获得可滚动结果集? (130)
10.12说出实现数据库查询的⽅法。

(131)
第⼀章 Java语⾔基础
1.1 指出JAVA语⾔的主要特点和JAVA程序的执⾏过程。

答:(1)强类型;
(2)编译和解释;
(3)⾃动⽆⽤内存回收功能;
(4)⾯向对象;
(5)与平台⽆关;
(6)安全性;
(7)分布式计算;
(8)多线程;
程序执⾏过程如图所⽰:
1.2 说出开发与运⾏JAVA程序的重要步骤。

答:(1)编写源⽂件:使⽤⼀个⽂本编译器,如Edit或记事本,不可以使⽤Word.将编好的源⽂件保存起来,源⽂件的扩展名必须
是.java;
(2)编译Java源⽂件:使⽤Java编译器(javac.exe)编译源⽂件得到字节码⽂件;
(3)运⾏Java程序:Java程序分为两类——Java应⽤程序必须通过Java解释器(java.exe)来解释执⾏其字节码⽂件;Java⼩应⽤程序必须通过⽀持Java标准的浏览器来解释执⾏。

1.3 如何区分应⽤程序和⼩应⽤程序?
答:应⽤程序在与源⽂件名字相同的类中,有main()⽅法,该⽅法代表应⽤程序的⼊⼝; ⼩应⽤程序必须有⼀个Applet类的⼦类,该类称作主类,必须⽤public修饰。

1.4 说出JAVA源⽂件的命名规则。

答:源⽂件命名规则和类命名规则⼀样,所有的单词⾸字母都⽤⼤写字母,且必须和源⽂件的public类同名。

1.6 JAVA语⾔使⽤什么字符集?共有多少个不同的字符?
答:Java语⾔使⽤Unicode字符集,共有65535个字符。

1.7 JAVA语⾔标识符的命名规则是什么?
(1)由字母(包括英⽂字母、下划线字符、美元字符、⽂字字符)和数字字符组成
(2)限定标识符的第⼀个字符不能是数字字符
(3)不能和关键字重名
(4)长度不能超过255个字符
1.8 JAVA有那些基本数据类型,它们的常量⼜是如何书写的?
1.9 指出下列内容哪些是JAVA语⾔的整型常量,哪些是浮点数类型常量,哪些两者都不是。

整型常量: 4)0xABCL,8)003,10)077,12)056L
浮点数类型常量:3)-1E-31,5).32E31 13)0.,14).0
两者都不是: 1),2),6),7),9),11)
第⼆章运算和语句
2.1 Java 的字符能参加算术运算吗?
可以。

(1)字符与整型数据运算,结果为整型数据,只能赋给整型变量,如果附给字符型变量会损失精度,需要强制类型装换;
(2)字符与字符运算,结果为字符型数据,可以直接赋给字符型或整型变量。

2.2 占字节多的变量能直接赋值给占字节少的变量么?
答:不能直接赋值,需要强制类型转换。

2.3 试⽤Java 语⾔表达式描述以下数学计算式或逻辑条件:
1)
解:V = (4.0/3)*Math.PI*Math.pow(r,3); 2)
解:R = 1.0 / (1.0/R1+1.0/R2);
3)
解:y = Math.pow(x,5) + Math.pow(x,3) + 6;
4)
解:F = 1.0 * M1 * M2 / (R * R);
5)
解:Math.sin(x) / a * x + Math.abs( Math.cos(π * x / 2) ); 6)0 < a <10
解:a > 0 && a < 10
7) 条件 x=1 与 y=2 有且只有⼀个成⽴.
解:( x == 1 && y != 2) || (x != 1 && y == 2)
2.4 设在求以下表达式之前,整型变量a 的值是4,试指出在求了以下表达式之后,变量a 、b 和c 的值。

1)
解:a=5 ; b=16; 2)

解:a=5 ; c=10
2.6 若⼀个数恰好等于它的因⼦之和,则这个数称为“完全数”。

编写程序求1000之内的所有完全数。

分析:若⼀个⾃然数,它所有的真因⼦(即除了⾃⾝以外的约数)的和恰好等于它本⾝,这种数叫做完全数。

例如6=1+2+3;28=1+2+4+7+14
程序运⾏结果:
3
)34(r V ?=π)11(121R R R +=635++=x x y 221R M M F ?=()()|2/cos |/sin x ax x ?+π;++*=a a b ;a a c +++=
/**
*@author段智敏
*/
public class Work2_6 {
public static void main(String[] args) {
String resultString = "1000以内,完全数有:"; //最后结果字符串
for (int i = 1; i <= 1000; i++){
if (isPerfectNumber(i)){
resultString += i + ",";
}
}
System.out.println(resultString);
}
private static boolean isPerfectNumber(int number) {
int sum = 0;// 因⼦的和
String str = new String("");
for (int i = 1; i < number; i++){
if (number % i == 0){
sum += i;
str += i + "+";
}
}
if (sum == number){// 如果因⼦之和,等于本⾝,则是完数
str = str.substring(0, str.length() - 1); // 去掉字符串最后⼀个多余的“+”; System.out.println(number + "的因⼦有:" + str);
return true;
}
return false;
}
}
2.7 编写输⼊正实数x,求平⽅不超过x的最⼤整数n,并输出。

程序运⾏结果:
第⼀种命令⾏⽅式输⼊
import java.util.Scanner;
/**
*编写输⼊正实数x,求平⽅不超过x的最⼤整数n,并输出。

*命令⾏⽅式,输⼊正实数,输出结果
*@author段智敏
*/
public class Work2_7_1
{
public static void main(String[] args)
{
Scanner consoleScanner = new Scanner(System.in);
System.out.print("请输⼊正实数X:");
String str = consoleScanner.next();
int number = -1;
try
{
number = Integer.parseInt(str);
}
catch( NumberFormatException e )
{
System.out.println("输⼊⾮法字符,程序结束");
return;
}
if (number < 1)
System.out.println("输⼊的数不是正实数,程序结束");
else
{
int n = (int) (Math.sqrt(number));
System.out.println("平⽅不超过"+number+"的最⼤整数,n="+n+";"); }
}
}
第⼆种窗⼝⽅式输⼊
运⾏结果如下图:
/**
*编写输⼊正实数x,求平⽅不超过x的最⼤整数n,并输出。

*弹出窗⼝⽅式
*@author段智敏
*/
import javax.swing.JOptionPane;
public class Work2_7_2
{
private int number;
public Work2_7_2()
{
number = this.getIntegerNumber("请输⼊⼀个正实数", 1);
if (number < 1)
return; // ⾮法,程序结束
int n = (int) (Math.sqrt(number));
showResult("平⽅不超过" + number + "的最⼤整数\nn = " + n + ";");
}
/**
*通过图形界⾯,得到符合规则的正整数的⽅法
*@param message - 在弹出的对话框中,显⽰提⽰信息message
*@param min -要求此数必须⼤于等于min
*/
public int getIntegerNumber(String message, int min)
{
String str = JOptionPane.showInputDialog(null, "请输⼊⼀个正整数", "提⽰信息", /doc/95b07257ba1aa8114431d9c4.html RMATION_MESSAGE); int number = -1;
try
{
number = Integer.parseInt(str); // 得到输⼊的正整数
}
catch( Exception e )
{
JOptionPane.showMessageDialog(null, "输⼊⾮数字字符\n程序结束", "错误警告", JOptionPane.ERROR_MESSAGE);
return -1; // 输⼊的不是数字字符,程序结束
}
if (number < min)
{
JOptionPane.showMessageDialog(null, "输⼊的数不符合规则,不是正整数\n程序结束", "错误警告", JOptionPane.ERROR_MESSAGE);
return -1; // 输⼊的数不是⼤于2的正整数时候,程序结束
}
else
return number;
}
/**
*弹出对话框,显⽰结果
*@param str-需要显⽰的字符串
*/
public void showResult(String str)
{
JOptionPane.showMessageDialog(null, str, "输出结果",
/doc/95b07257ba1aa8114431d9c4.html RMATION_MESSAGE); }
public static void main(String[] args)
{
new Work2_7_2();
}
}
2.8 输⼊正整数n,输出由n⾏n列星号字符组成的三⾓形图案。

程序运⾏结果:
源代码⽂件:Work2_8.java
import java.util.*;
/**
*输⼊正整数n,输出由n⾏n列星号字符组成的三⾓形图案。

*@author段智敏
*/
public class Work2_8
{
public static void main(String args[])
{
Scanner consoleScanner = new Scanner(System.in);
int n = -1;
try
{
n = Integer.parseInt(str);
}
catch( NumberFormatException e )
{
System.out.println("输⼊⾮法字符,程序结束");
return;
}
if (n < 1)
System.out.println("输⼊的数不是正实数,程序结束");
else
{
for(int i=0;i
{
for(int j=0;j
{
System.out.print(" ");
}
for(int k=0;k
{
System.out.print("*");
}
System.out.println();
}
}
}
}
2.9 设有整型变量x和y的值分别为5和110。

试指出执⾏了以下循环语句后,变量x和y的值分别多少?1)while(x<=y) x*=2;
解:x=160 ;y=110;
2)do{x=y/x; y=y-x;}while(y>=1);
程序运⾏结果:
源代码⽂件:Work2_10.java
/**
*求⼩于999的所有⽔仙花数
*@author段智敏
*/
public class Work2_10
{
public static void main(String[] args) {
String resultString = new String("1000之前的所有⽔仙花数有:");// ⽤来存结果的字符串for (int i = 100; i < 999; i++)
{
if (isNarcissusNumber(i))
resultString += " " + i;
}
System.out.println(resultString.substring(0,
resultString.length() - 1));
}
public static boolean isNarcissusNumber(int m)// 判断是否是⽔仙花数的⽅法
{
int number = m;// 把m存起来
int a[] = new int[100];// ⽤来存n每个位上的数
int amount = 0;// 表⽰n的位数
while (m > 0)// 通过循环得到m每个位上的数,存到数组中
{
a[amount] = m % 10;
m = m / 10;
amount++;
}
int sum = 0;
for (int j = 0; j < amount; j++)// 累加每位上的数的位数次⽅
if (number == sum)// 如果累加的和等于这个数本⾝,则他是⽔仙花数,返回真return true;
return false;
}
2.11 编程序解百鸡问题:鸡翁⼀,值钱五;鸡母⼀,值钱三;鸡雏三,值钱⼀。

百钱买百鸡。

求鸡翁、鸡母和鸡雏各⼏何?程序运⾏结果:
源代码⽂件:Work2_11.java
/**
*鸡翁⼀,值钱五;鸡母⼀,值钱三;鸡雏三,值钱⼀。

*百钱买百鸡。

求鸡翁、鸡母和鸡雏各⼏何。

*@author段智敏
*/
public class Work2_11
{
public static void main(String args[])
{
for (int i = 0; i <= 100; i++)
{
for (int j = 0; j <= 100; j++)
{
for (int k = 0; k <= 100; k += 3) //鸡雏的个数必须使3的倍数
{
if(((5*i + 3 * j + k / 3) == 100) && (i + j + k == 100))
System.out.println("鸡翁:"+ i + "; 鸡母:"+ j + "; 鸡雏:"+ k);
}
}
}
}
}
2.12 编写程序,按下⾯的公式计算⾃然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+......
/**
public static void main(String args[])
{
int n = 1000; // 计算精度
double e = 1.0;
for (int i = 1; i <= n; i++)
{
e = e + 1.0 / Work2_12.factorial(i);
}
System.out.println("e = " + e);
}
/**
*计算阶乘的静态⽅法
*@param-需要计算阶乘的数
*@return-最后结果
*/
static double factorial(int a)
{
double f = 1.0;
for (int j = 1; j <= a; j++)
f = f * j;
return f;
}
}
2.13 编写程序,⽤如下公式计算圆周率PI的近似值:PI=4-4/3+4/5-4/7+4/9-4/11...程序运⾏结果:
源代码⽂件:Work2_13.java
/**
public static void main(String args[])
{
int num = 1000000; // 控制计算的项数,越⾼,越准确
System.out.println("⽤公式计算圆周率,\n计算" + num + "项后圆周率的近似值为" + Work2_13.getPai(num));
System.out.println("3.14是第" + Work2_13.getIndex(3.14) + "项,\t\t值为:"
+ Work2_13.getPai(Work2_13.getIndex(3.14)));
System.out.println("3.141是第"+ Work2_13.getIndex(3.141) + "项,\t值为:"
+ Work2_13.getPai(Work2_13.getIndex(3.141)));
System.out.println("3.1415是第" + Work2_13.getIndex(3.1415) + "
项,\t值为:"
+ Work2_13.getPai(Work2_13.getIndex(3.1415)));
System.out.println("3.14159是第" + Work2_13.getIndex(3.14159) + "项,\t值为:" + Work2_13.getPai(Work2_13.getIndex(3.14159)));
}
/**
*根据给出的数值,得到需要计算多少项才能得到这个数值
*
*@param p-数值
*@return-项数
*/
public static double getIndex(double p)
{
int r = 1, num = 1000000; // 控制计算的项数,越⾼,越准确
double i = 1.0, pai = 0.0, t = 1.0;
while (r < num)
{
pai = pai + (4.0 / i) * t;
t = -t;
i = i + 2;
r++;
break;
}
return r;
}
/**
*根据给出的数,按公式进⾏计算圆周率
*@param num-公式项数
*@return返回按公式计算出的圆周率
*/
public static double getPai(double num)
{
int r = 1;
double i = 1.0, pai = 0.0, t = 1.0;
while (r < num)
{
pai = pai + (4.0 / i) * t;
t = -t;
i = i + 2;
r++;
}
return pai;
}
}
2.14 回⽂整数是指正读法和反读相同的整数,编写⼀个程序,输⼊⼀个整数,判断他是否为回⽂整数。

程序运⾏结果:
import javax.swing.JOptionPane;
/**
*输⼊整数,判断是否是回⽂整数
*@author段智敏
*/
{
private int number;
public Work2_14()
{
number = getIntegerNumber("输⼊⼀个正整数n", 1);// 要求是>=1的整数if (number < 0)
return;
if (isPalindrome(number))
showResult("输⼊的正整数“" + number + "”是回⽂数");
else
showResult("输⼊的正整数“" + number + "”不是回⽂数");
}
/**
*判断是否是回⽂数
*@param number-需要判断的正整数
*@return是回⽂数返回真,否则返回假
*/
public boolean isPalindrome(int number)
{
int a[] = new int[100];
int i = 0;
int test = number;
while (test > 0) // 把整数的各个位上的数存到数组⾥
{
a[i] = test % 10;
test = test / 10;
i++;// 累计整数位数
}
for (int j = 0; j < i; j++)
{
if (a[j] != a[i - j - 1])// 有对应不相等的,肯定不是,直接跳出并附给b为false {
return false;
}
return true;// 如果⼀直相等,则if⾥边的语句不能被执⾏b的值是true }
/**
*通过图形界⾯,得到符合规则的正整数的⽅法
*@param message - 在弹出的对话框中,显⽰提⽰信息message
*@param min - 要求此数必须⼤于等于min
*@return返回符合规则的整数
*/
public int getIntegerNumber(String message, int min)
{
String str = JOptionPane.showInputDialog(null, message, "提⽰信息",
/doc/95b07257ba1aa8114431d9c4.html RMATION_MESSAGE); int number = -1;
try
{
number = Integer.parseInt(str); // 得到输⼊的正整数
}
catch( Exception e )
{
JOptionPane.showMessageDialog(null, "输⼊⾮数字字符\n程序结束", "错误警告", JOptionPane.ERROR_MESSAGE);
return -1; // 输⼊的不是数字字符,程序结束
}
if (number < min)
{
JOptionPane.showMessageDialog(null, "输⼊的数不符合规则,不是正整数\n程序结束", "错误警告", JOptionPane.ERROR_MESSAGE);
return -1; // 输⼊的数不是⼤于2的正整数时候,程序结束
}
else
return number;
}
/**
*弹出对话框,显⽰结果
*@param str-需要显⽰的字符串
public void showResult(String str)
{
JOptionPane.showMessageDialog(null, str, "输出结果",
/doc/95b07257ba1aa8114431d9c4.html RMATION_MESSAGE);
}
public static void main(String args[])
{
new Work2_14();
}
}
2.15 草地上有⼀堆野果,有⼀只猴⼦每天吃掉这堆野果的⼀半⼜⼀个,5天后刚好吃完这堆野果,求这堆野果原来共有多少个?猴⼦每天吃多少个野果?
程序运⾏结果:
源代码⽂件:Work2_15.java
/**
*猴⼦吃苹果问题
*@author段智敏
*/
public class Work2_15
{
public static void main(String args[])
{
int i, j, test = 1;
for (i = 1; i < 100000; i++)
{
test = i;
for (j = 0; j < 5; j++) // 5天
{
test = test / 2 - 1;
}
System.out.println("这堆野果原来共有" + i + "个");
break;
}
}
// 打印出猴⼦每天吃野果⼦的个数
int eat;
test = i;
for (j = 1; j <= 5; j++)
{
eat = test / 2 + 1;
test = test / 2 - 1;
System.out.println("第" + j + "天吃" + eat + "个");
}
}
}
第三章⾯向对象编程基础
3.1 什么是⾯向对象技术?它有什么优点?
答:⾯向对象技术强调在软件开发过程中⾯向客观世界或问题域中的事物,采⽤⼈类在认识客观世界的过程中普遍运⽤的思维⽅法,直观、⾃然地描述客观世界中的有关事物。

⾯向对象技术的基本特征主要有抽象性、封装性、继承性和多态性。

3.2 ⾯向对象程序设计与⾯向过程程序设计有什么区别?
答:⾯向过程程序设计关注的是函数功能的实现;⾯向对象程序设计关注将函数和数据如何绑定到⼀个对象,通过对象的描述、对象间的关系、类的管理实现程序的功能。

3.3 程序中类和对象有什么区别?
答:类是⼀组对象共性的集合。

类具有⾏为,它描述⼀个对象能够做什么以及做的⽅法,它们是可以对这个对象进⾏操作的程序和过程。

对象是类的⼀个实例,它代表⼀个现实物理“事件”。

3.4 类变量和实例变量,以及类⽅法和实例⽅法的区别。

3.5 ⼦类能继承超类的哪些成员变量和⽅法?。

相关文档
最新文档