欢迎光临
免费的PDF电子书下载网站

Java语言程序设计(第3版)学习指导与习题解析 PDF下载

编辑推荐

本书与主教材《Java语言程序设计(第3版)》的各章一致,共分15章。每章均包含下述三个方面的内容。   1. 本章要点   这部分内容总结本章讲述的主要内容,包括基本概念和基本方法,指出读者应该学习掌握的主要知识点,对教材中有些容易模糊的问题给了更细致的讲解。读者可以将这部分内容作为阅读教材的提纲。   2. 实验指导   这部分内容包括本章的实验要求和实验题目。学习程序设计需要多编写程序、上机实践,这样可以发现问题,找到和学会解决这些问题的方法,更好地掌握所学知识和提高编程能力。本部分给出的上机实验题目所涉及的知识点是本章的重点,应该认真完成。   3. 习题解答 ; ;

内容简介

本书是《Java语言程序设计》(第3版)(清华大学出版社)的配套学习与实训指导,目的是为学生课前、课后学习和上机实训提供帮助和指导。全书章节与主教材一致,共18章,每章包含: 本章学习指导,给出了本章学习目标、课前学习自测题目、核心知识点思维导图以及学习参考资源等; 复习与思考题,给出了本章复习与思考题,这些题目有助于学生理解、巩固和消化本章的主要内容;实训任务,通过完成若干实训任务使学生进一步强化本章所学知识; 编程练习及答案,给出主教材中编程练习的参考答案,供学生在学习时参考。 本书可作为计算机及相关专业学生“Java语言程序设计”课程的辅导和实验教材,也可作为自学者学习“面向对象”课程或Java语言的参考书。

作者简介

暂无

Java语言程序设计(第3版)学习指导与习题解析 PDF下载

目录

 ;目录

第1章Java语言概述

1.1本章学习指导

1.1.1本章学习目标

1.1.2课前学习与自测

1.1.3知识点导图

1.1.4学习参考资源

1.2复习与思考题

1.3实训任务

1.4编程练习及答案

第2章Java语言基础

2.1本章学习指导

2.1.1本章学习目标

2.1.2课前学习与自测

2.1.3知识点导图

2.1.4学习参考资源

2.2复习与思考题

2.3实训任务

2.4编程练习及答案

第3章选择与循环

3.1本章学习指导

3.1.1本章学习目标

3.1.2课前学习与自测

3.1.3知识点导图

3.1.4学习参考资源

3.2复习与思考题

3.3实训任务

3.4编程练习及答案

第4章类和对象

4.1本章学习指导

4.1.1本章学习目标

4.1.2课前学习与自测

4.1.3知识点导图

4.1.4学习参考资源

4.2复习与思考题

4.3实训任务

4.4编程练习及答案

第5章数组

5.1本章学习指导

5.1.1本章学习目标

5.1.2课前学习与自测

5.1.3知识点导图

5.1.4学习参考资源

5.2复习与思考题

5.3实训任务

5.4编程练习及答案

第6章字符串

6.1本章学习指导

6.1.1本章学习目标

6.1.2课前学习与自测

6.1.3知识点导图

6.1.4学习参考资源

6.2复习与思考题

6.3实训任务

6.4编程练习及答案

第7章继承与多态

7.1本章学习指导

7.1.1本章学习目标

7.1.2课前学习与自测

7.1.3知识点导图

7.1.4学习参考资源

7.2复习与思考题

7.3实训任务

7.4编程练习及答案

第8章Java常用核心类

8.1本章学习指导

8.1.1本章学习目标

8.1.2课前学习与自测

8.1.3知识点导图

8.1.4学习参考资源

8.2复习与思考题

8.3实训任务

8.4编程练习及答案

第9章内部类、枚举和注解

9.1本章学习指导

9.1.1本章学习目标

9.1.2课前学习与自测

9.1.3知识点导图

9.1.4学习参考资源

9.2复习与思考题

9.3实训任务

9.4编程练习及答案

第10章接口与Lambda表达式

10.1本章学习指导

10.1.1本章学习目标

10.1.2课前学习与自测

10.1.3知识点导图

10.1.4学习参考资源

10.2复习与思考题

10.3实训任务

10.4编程练习及答案

第11章泛型与集合

11.1本章学习指导

11.1.1本章学习目标

11.1.2课前学习与自测

11.1.3知识点导图

11.1.4学习参考资源

11.2复习与思考题

11.3实训任务

11.4编程练习及答案

第12章异常处理

12.1本章学习指导

12.1.1本章学习目标

12.1.2课前学习与自测

12.1.3知识点导图

12.1.4学习参考资源

12.2复习与思考题

12.3实训任务

12.4编程练习及答案

第13章输入输出

13.1本章学习指导

13.1.1本章学习目标

13.1.2课前学习与自测

13.1.3知识点导图

13.1.4学习参考资源

13.2复习与思考题

13.3实训任务

13.4编程练习及答案

第14章JavaFX基础

14.1本章学习指导

14.1.1本章学习目标

14.1.2课前学习与自测

14.1.3知识点导图

14.1.4学习参考资源

14.2复习与思考题

14.3实训任务

14.4编程练习及答案

第15章事件处理与常用控件

15.1本章学习指导

15.1.1本章学习目标

15.1.2课前学习与自测

15.1.3知识点导图

15.1.4学习参考资源

15.2复习与思考题

15.3实训任务

15.4编程练习及答案

第16章JDBC数据库编程

16.1本章学习指导

16.1.1本章学习目标

16.1.2课前学习与自测

16.1.3知识点导图

16.1.4学习参考资源

16.2复习与思考题

16.3实训任务

16.4编程练习及答案

第17章并发编程基础

17.1本章学习指导

17.1.1本章学习目标

17.1.2课前学习与自测

17.1.3知识点导图

17.1.4学习参考资源

17.2复习与思考题

17.3实训任务

17.4编程练习及答案

第18章Java网络编程

18.1本章学习指导

18.1.1本章学习目标

18.1.2课前学习与自测

18.1.3知识点导图

18.1.4学习参考资源

18.2复习与思考题

18.3实训任务

18.4编程练习及答案

前沿

 ;前言

本书是《Java语言程序设计》(第3版)一书的配套教辅用书,主教材已由清华大学出版社出版。本书章节划分与主教材的各章保持一致,共18章。每章包含下面4个方面的内容。

1. ; 本章学习指导

这部分内容首先给出本章学习目标和课前学习自测,然后通过思维导图总结本章核心知识点以及重点难点分析,并提供学习参考资源。

2. ; 复习与思考题

这部分内容是根据本章的知识点设计的思考题,这些思考题可供学生学完有关内容后检测学习效果之用,也可供教师选择若干题目让学生讨论,以便强化学生对知识点的理解和掌握。

3. ; ; 实训任务

这部分内容主要训练学生的动手实践能力,其中包括若干训练任务,每个任务训练学生对不同知识点的掌握程度。本部分还包含复杂一些的任务,供小组协作完成,从而培养学生团队合作精神。学习程序设计需要多编写程序,多上机实践,这样可以发现问题,找到和学会解决这些问题的方法,更好地掌握所学知识和提高编程能力。本部分给出的实训题目所涉及的知识点是本章的重点,应该认真完成。

4. ; ; 编程练习及答案

这部分内容对主教材每章中的编程练习题给出了参考答案。这些答案并不是唯一的,建议读者先自己完成题目,然后再对照这里的答案,这更有助于掌握所学知识。

本书是对主教材的补充和扩展。希望本书对读者进一步了解这门课程的基本要求和掌握Java语言的实际应用能够有所帮助。

本教材在编著过程中得到了许多老师和同学的大力支持和帮助,在此表示感谢,也由衷希望广大读者多提宝贵意见。由于作者水平有限,书中难免存在不足,欢迎读者和同行批评指正。

编者

2018年3月

免费在线读

第3章选择与循环
本章主要学习Java语言的流程控制结构,包括选择结构(ifelse结构、switch结构)、循环结构(while循环、dowhile循环和for循环)及其应用。3.1本章学习指导3.1.1本章学习目标
学习完本章,将获得下列能力: ; 学会选择结构的使用,包括单分支和双分支结构; ; 解释条件运算符的用法; ; 学会使用switch结构实现多分支,熟悉switch中可使用的表达式类型; ; 能够区分while循环和dowhile循环; ; 熟悉for循环的基本格式和使用场景; ; 掌握break语句和continue语句的使用; ; 了解无限循环及结束循环的方法; ; 掌握嵌套循环的执行流程。3.1.2课前学习与自测阅读教材第3章,观看教学视频,通过互联网搜索、学习有关内容,完成下面自测题目。(1) 编写一个if语句,在变量x的值大于0时,将1赋给变量y。(2)  ;编写一个ifelse语句,若变量x大于y,将x赋给变量max,否则将变量y赋给变量max。(3)  ;编写布尔表达式,当体重weight大于50或身高height大于1.70时结果为true。(4)  ;dowhile循环和while循环,哪个将至少被执行一次。(5) 用while写一个无限循环结构。(6) 在嵌套的循环结构的内层循环中,要结束外层循环应该使用语句。(7) 在for循环结构for(int i=0; i<;100; i )循环体中,若包含一个continue语句,当执行到该语句时,程序控制转到。(8) 下面的ifelse结构用条件运算符可写为。
if(age >;=16) ticketPrice = 20;
else  ;ticketPrice = 10;
(9) 下面代码中输出语句将打印多少个星号(*)?
for(int i = 0; i <; 10; i )
for(int j = i; j <; 10; j )
System.out.print ("*");

3.1.3知识点导图
重点难点: 本章重点是学会Java语言各种控制结构的使用,包括单分支(if)、双分支(ifelse)和多分支(switch)结构、while循环、dowhile循环和for循环结构。难点是选择和循环结构的嵌套。3.1.4学习参考资源(1) Liang Y Daniel. Java语言程序设计(基础篇)(原书第10版).戴开宇,译.北京: 机械工业出版社,2015。其中,第3章介绍了选择结构,第5章介绍了各种循环结构以及循环嵌套。(2) Bruce Eckel. Java编程思想.4版.陈昊鹏,译.北京: 机械工业出版社,2007。其中,第4章介绍了控制执行流程,包括ifelse结构及各种迭代结构。(3) Oracle官方在线Java教程,下面页面介绍了变量、运算符、表达式和流程控制:  ;https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html3.2复习与思考题31下面的if语句在Java语言中是否合法?
if(0 <;= n <;=10){ ;
System.out.println("n的值介于0和10之间"); ;
}
32假设x=2以及y=3,如果下面代码有输出结果,请给出。如果x=3且y=2,结果如何?如果x=3且y=3,结果如何?
if(x >; 2)
if(y >; 2){
int z = x y;
System.out.println("z is " z) ;
}
else{
System.out.println("x is " x) ;
} ;
33下面代码有什么错误? ;
if(score >;= 60.0)
System.out.println("及格") ;
else if(score >;= 70.0)
System.out.println("中等") ;
else if(score >;= 80.0)
System.out.println("良好") ;
else if(score >;= 90.0)
System.out.println("优秀") ;
else
System.out.println("不及格") ;
34根据下面要求编写语句。(1) 产生一个随机整数i,使得0≤i<20。 ;(2) 产生一个随机整数i,使得10≤i<20。(3) 产生一个随机整数i,使得0≤i≤50。(4) 编写一个表达式,随机返回0或1。35编写布尔表达式,当年龄age大于13且小于16时,结果为true。36编写布尔表达式,当体重weight大于50或身高height大于1.70,但是不是同时满足时,结果为true。37编写一个switch语句,如果day是0、1、2、3、4、5、6,分别显示Sunday、Monday、Tuesday、Wednesday、Thursday、Friday和Saturday。38使用ifelse语句重写下面的表达式。
tax  ;= (income >; 10000) ? income * 0.2 : income * 0.17 1000;
39写一个表达式,要求这个表达式根据x是否大于、小于或等于y,分别取值1,-1或0。310写出下面程序的运行结果。
public class Foo{ ;
public static void main(String[] args){ ;
int i = 1; ;
int j = i ; ;
if((i >; j) &;&; (i == j)){ ;
i = j; ;
} ;
System.out.println("i = " i ", j = " j) ;
} ;
} ;
311若编写代码实现如下功能: 如果年龄(age)大于40岁,并且工资(salary)小于5000元,工资增加1000元; 如果年龄不大于40岁,将工资增加500元。讨论下面的代码是否正确。
if(age >; 40) ;
if(salary <; 5000)
salary = salary 1000;
else
salary = salary 500;
312给定下面代码段,问变量i可使用哪三种数据类型?()
switch(i){
default:
System.out.println("Hello");
}

A.  ;charB. byteC. floatD.  ;doubleE. ObjectF. enum313给定下面程序段,输出结果是什么?()
int i = 1, j = 0;
switch(i){ ;
case 1:  ;j = 6; ;
case 2:  ;j = 1; ;
default:  ;j = 2; ;
} ;
System.out.println(j);
A. 2B. 6C. 7D.  ;9314下面的程序有错误: ;
public class IfWhileTest{
public static void main(String[] args){
int x = 1, y = 6;
if(x = y) 
System.out.println("Equal "); 
else 
System.out.println("Not equal "); 
while (y--)  { x ; }
System.out.println("x = " x "  y = " y);
}
}
若使程序输出下面结果,应如何修改程序?
Not equal 
x = 7y = -1
315假设输入是23450,那么下面程序的输出结果是什么?
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int number, max;
number = input.nextInt();
max = number;

while(number!=0){
number = input.nextInt();
if(number > max)
max = number;
}
System.out.println("max is " max); 
System.out.println("number is " number); 
}
}
316下面代码的输出结果是什么?解释原因。
int x = 80000000;
while (x > 0)
x ;
System.out.println("x is " x); 
317下面程序段执行后,i 、j的值分别是什么?()
int i = 1, j = 10; 
do{ 
if(i > --j)  
continue; 
}while(i < 5); 
System.out.println("i=" i "  j=" j);
A.  i = 6j = 5B. i = 5j = 5 C.  i = 6j = 4D. i = 5j = 6 318将下面的for循环语句转换为while循环和dowhile循环。
long sum = 0; 
for(int i = 0; i <= 1000; i )
sum = sum i; 
319下面程序输出2~100的所有素数,请填空。
public class PrimeDemo{
public static void main(String[] args){
int i = 0, j = 0;
for(i = 2; i <= 100; i ){
for(j = 2; j < i; j ){
if(i % j == 0)

}
if()
System.out.print(i "  ");
}
}
}
320下面程序的执行结果是什么?()
public class FooBar{ 
public static void main(String[] args){ 
int i = 0, j = 5; 
tp: for(; ; i ){ 
for(; ; --j) 
if(i > j)  break tp; 

System.out.println("i = " i ",j = " j); 

}
A.  i = 1, j = -1B. i = 0, j = -1C.  i = 1, j = 4D. i = 0, j = 4E. 在第4行产生编译错误321给出下面程序的执行结果。
public class LabelDemo{
public static void main(String[] args){
outer:
for(int i = 0; i < 3; i ){
inner:
for(int j = 0; j < 100; j ){
if(j == 20){
break outer;}
if(j % 3 ==0){
continue inner;
}
System.out.print(j "  ");
}

}
}
3.3实 训 任 务【实训目标】 学会Java各种选择结构,包括ifelse结构和switch结构;  学会Java各种循环结构的使用,包括while循环、dowhile循环和for循环以及循环结构的嵌套。任务1学习选择结构使用编写程序,从键盘输入a和b两个整数,比较两者大小,使得a大于或等于b。提示: 如果a小于b,需要交换a与b的值。可以使用下面代码交换a与b。
 int t = a;
 a = b;
 b = t;
任务2学习选择结构使用编写程序,从键盘输入a、b、c、d四个整数,计算(a b)/(c-d)的值,如果c-d的值为0,应输出错误信息。提示: 整数除法要求除数不能为0,因此需要首先判断c-d是否为0,若为0给出错误提示。另外,整数除法结果为整数商,小数部分被舍弃。下面是一次运行结果。
请输入4个整数: 30 40 50 20
计算结果为2
任务3学习多分支的选择结构使用对于一个成年人,BMI值的含义如下:  小于16,表示严重过轻;  16~18,表示过轻;  18~24,表示体重适中;  24~29,表示过重;  29~35,表示肥胖;  大于35,表示非常肥胖。编写程序,从键盘上输入体重(单位为公斤)和身高(单位为米),输出体重在什么范围。
请输入体重(公斤): 70
请输入身高(米): 1.78
你的体重适中!
任务4学习使用switch选择结构编写程序,从键盘上输入一个季节名称字符串(如spring、summer、autumn和winter),然后输出一句话,如若输入spring,输出“春暖花开”。
请输入一个英文季节名: autumn
秋高气爽
任务5学习循环结构的使用编写程序,分别使用while循环、dowhile循环和for循环结构,计算并输出1~1000含有7或7倍数的整数之和及个数。下面是部分输出结果。

994
997
和=206191
个数=374
小组任务选择与循环综合应用开发一个让小学生练习两位整数加减法的程序,能够随机生成两个两位数及加减号(要保证减法算式的被减数大于减数),显示题目让学生输入计算结果,程序判断结果是否正确。要求连续完成10道题目,每题10分,最后给出得分。修改程序完成加减乘除四则运算。要求除法运算是整数且商也是整数的除法,也就是余数为0。3.4编程练习及答案31编写程序,要求用户从键盘上输入一个正整数,程序判断该数是奇数还是偶数。参考程序如下: 
import java.util.Scanner;
public class EvenOdd{
public static void main(String[] args){
int num;
Scanner input = new Scanner(System.in);
System.out.println("请输入一个整数: ");
num = input.nextInt();
if(num%2==0){
System.out.println(num "是偶数");
}else{
System.out.println(num "是奇数");
}
}
}
32编写程序,要求用户从键盘上输入一个年份,输出该年是否是闰年。符合下面两个条件之一的年份即为闰年: (1) 能被4整除,但不能被100整除。(2) 能被400整除。下面是程序的一次运行。

请输入年份: 2017
2017年不是闰年。
参考程序如下:
import java.util.Scanner;
public class LeapYear{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入年份: ");
int year = sc.nextInt() ; 
if((year % 4 == 0 && year % 100 != 0)||year % 400 == 0){
System.out.println(year " 年是闰年。") ;
}else{
System.out.println(year " 年不是闰年。") ;
}
}
}
33编写程序,要求用户从键盘输入4个整数,找出其中最大值和最小值并打印输出。要求使用尽可能少的if(或ifelse)语句实现。提示: 4条if语句就够了。参考程序如下: 
import java.util.Scanner;
public class MaxMin{
public static void main(String[] args){
int num1,num2,num3,num4,max,min,
max1,max2,min1,min2;
Scanner input = new Scanner(System.in);
System.out.println("请输入4个整数: ");
num1 = input.nextInt();
num2 = input.nextInt();
num3 = input.nextInt();
num4 = input.nextInt();
if(num1>num2){
max1 = num1;
min1 = num2;
}else{
max1 = num2;
min1 = num1;
}
if(num3>num4){
max2 = num3;
min2 = num4;
}else{
max2 = num4;
min2 = num3;
}

if(max1>max2){
max = max1;
}else{
max = max2;
}

if(min1 < min2){
min = min1;
}else{
min = min2;
}
System.out.println("最大值=" max);
System.out.println("最小值=" min);
}
}
34可以使用下面的公式求一元二次方程ax2 bx c=0的两个根:  

x1=-b b2-4ac2a和x2=-b-b2-4ac2a

b2-4ac称为一元二次方程的判别式,如果它是正值,那么方程有两个实数根; 如果它为0,方程就只有一个根; 如果它是负值,方程无实根。编写程序,提示用户输入a、b和c的值,程序根据判别式显示方程的根。如果判别式为负值,显示“方程无实根”。提示: 使用Math.sqrt()方法计算数的平方根。参考程序如下: 
import java.util.Scanner;
public class EquationRoot{
public static void main(String[] args){
double a,b,c,discrim;
double root1,root2;
Scanner input = new Scanner(System.in);
System.out.println("请输入a,b,c的值: ");
a = input.nextDouble();
b = input.nextDouble();
c = input.nextDouble();
discrim = b*b-4*a*c;
if(discrim < 0){
System.out.println("方程无实根");
}else{
root1 = (-b Math.sqrt(discrim))/(2*a); 
root2 = (-b - Math.sqrt(discrim))/(2*a);
System.out.println("第一个根是: " root1);
System.out.println("第二个根是: " root2);
}  
}
}
35从键盘输入一个百分制的成绩,输出五级制的成绩,如输入85,输出“良好”,要求使用switch结构实现。参考程序如下: 
import java.util.Scanner;
public class GradeTest{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入成绩: ");
double score = input.nextDouble(); 
String grade = "";
if(score >100 || score <0){
System.out.println("输入的成绩不正确。");
System.exit(0);// 结束程序运行
}else{
int g = (int)score /10;
switch(g){
default: grade = "不及格"; break;
case 10: case 9: grade = "优秀"; break;
case 8: grade = "良好"; break;
case 7: grade = "中等"; break;
case 6: grade = "及格"; break;
}
}
System.out.println("你的成绩为: " grade);
}
}
36编写程序,接受用户从键盘输入10个整数,比较并输出其中的最大值和最小值。参考程序如下: 
import java.util.Scanner;
public class TenNum{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入第1个整数: ");
int max = sc.nextInt();
int min = max;
for(int i=2;i <=10; i ){
System.out.print("请输入第" i "个整数: ");
 int num = sc.nextInt();
if(num >max) max = num;
if(num < min) min = num; 
}
System.out.println("max= " max);
System.out.println("min= " min);
}
 }
37编写程序,要求用户从键盘输入一个年份和月份,然后显示这个月的天数。例如,如果用户输入的是2012年2月,那么程序应该显示“2012年2月有29天”。如果用户输入的是2015年3月,那么程序应该显示“2015年3月有31天”。参考程序如下: 
import java.util.Scanner;
public class YearMonth{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int numDays = 0;
switch (month){
case 1: case 3: case 5:
case 7: case 8: case 10:
case 12:
numDays = 31;
break;
case 4: case 6: case 9: case 11:
numDays = 30;
break;
case 2:     // 对于2月需要判断是否是闰年
if(((year % 4 == 0) && 
!(year % 100 == 0))
|| (year % 400 == 0))
numDays = 29;
else
numDays = 28;
break;
default:
System.out.println("月份非法.");
break;
}
System.out.println("该月的天数为: "   numDays);
}
}
38编写程序,要求用户从键盘输入一个年份,程序输出该年出生的人的生肖。中国生肖基于12年一个周期,每年用一个动物代表。鼠(rat)、牛(ox)、虎(tiger)、兔(rabbit)、龙(dragon)、蛇(snake)、马(horse)、羊(sheep)、猴(monkey)、鸡(rooster)、狗(dog)和猪(pig)。通过year%12确定生肖,1900年属鼠。参考程序如下: 
import java.util.Scanner;
public class AnimalYear{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入出生年份:");
int year = input.nextInt();
String animal="";
switch(year%12){
case 4: animal="鼠";break;
case 5: animal="牛";break;
case 6: animal="虎";break;
case 7: animal="兔";break;
case 8: animal="龙";break;
case 9: animal="蛇";break;
case 10: animal="马";break;
case 11: animal="羊";break;
case 0: animal="猴";break;
case 1: animal="鸡";break;
case 2: animal="狗";break;
case 3: animal="猪";break;
}
System.out.println("你的属相是: "   animal);
}
}
39编写程序,模拟石头、剪刀、布游戏。程序随机产生一个数,这个数为2、1或0,分别表示石头、剪刀和布。提示用户输入值2、1或0,然后显示一条消息,表明用户和计算机谁赢了游戏。下面是运行示例: 
你出什么?(石头(2)、剪刀(1)、布(0)): 2
计算机出的是: 剪刀,你出石头,你赢了。
参考程序如下: 
import java.util.Scanner;
public class Game{
public static void main(String[] args){
int comp = (int)(Math.random()*3);
int your;
Scanner input = new Scanner(System.in);
System.out.print("你出什么?(石头(2)、剪刀(1)、布(0)): ");
your = input.nextInt();
System.out.print("计算机出的是: "  
((comp==2)?"石头":((comp==1)?"剪刀":"布")));
System.out.print(",你出"  
((your==2)?"石头":((your==1)?"剪刀":"布")));
if(comp==your){
System.out.print(",平局");
}else if((your-comp==1 || your-comp==-2)){
System.out.print(",你赢了");
}else{
System.out.print(",你输了");
}
}
}
310编写程序,计算并输出1~1000含有7或7倍数的整数之和及个数。参考程序如下: 
public class SevenDemo{
public static void main(String[] args){
int sum = 0, count = 0;
for(int n = 1; n <=1000;n ){
if(n % 7 ==0 || n / 100==7 || n % 10 ==7 || n / 10 %10 ==7){
sum = sum n;
count = count 1;
System.out.println(n);
}
}
System.out.println("和=" sum);
System.out.println("个数=" count);
}
}
311编写程序,显示100~1000所有能被5和6整除的数,每行显示10个。数字之间用一个空格字符隔开。参考程序如下: 
public class FiveSix{
public static void main(String[] args){
int count = 0;
for(int n =100; n <=1000; n ){
if(n % 5==0 && n%6==0){
count ;
if(count%10==0){
count = 0;
System.out.println(n);
}else{
System.out.print(n "  ");
}
}
}
}
}
312编写程序,从键盘输入一个整数,计算并输出该数的各位数字之和。例如: 
请输入一个整数: 8899123
各位数字之和为: 40
参考程序如下: 
import java.util.Scanner;
public class DigitSum{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int n,sum = 0;
n = input.nextInt();
while(n > 0){
sum = sum n%10;
n = n / 10;
}
System.out.println("各位数字之和为: " sum);
}
}
313编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值。在这个程序中不要使用Integer.toBinaryString(int)方法。参考程序如下: 
import java.util.Scanner;
public class ToBinaryDemo{
public static void main(String[] args){
String s="";
int n;
Scanner input = new Scanner(System.in);
System.out.print("请输入一个正整数:");
n = input.nextInt();
while(n>0){
s = (n % 2) s;
n = n / 2;
}
System.out.println(s);
}
}
314编写程序,计算下面级数之和: 

13 35 57 79 911 1113 … 9597 9799

参考程序如下: 
public class SeriesSum{
public static void main(String[] args){
int n = 1;
double sum = 0;
while(n < 99){
sum = sum (double) n / (n 2);  // 将一个操作数转换成double
n = n 2;
}
System.out.println("sum = " sum);
}
}
315求解“鸡兔同笼问题”: 鸡和兔在一个笼里,共有腿100条,头40个,问鸡兔各有几只?参考程序如下: 
public class ChickenHare{
public static void main(String[] args){
int legs = 100;
int heads = 40;
int chick, hare;
for(chick = 0;chick <= 50;chick ){
for(hare=0;hare<=25;hare ){
if((chick hare)==40&&(chick*2 hare*4)==100)
System.out.println("chick=" chick " ,hare=" hare);
}
}
}
}
316编写程序,求出所有的水仙花数。水仙花数是这样的三位数,它的各位数字的立方和等于这个三位数本身,如371=33 73 13,371就是一个水仙花数。参考程序如下: 
public class Narcissus{
public static void main(String[] args){
for(int i = 100; i < 1000; i ){
int a = i %10; 
int b = (i / 10)%10;
int c = i / 100;
if(a*a*a b*b*b c*c*c==i)
System.out.println(i);
}
}
}
317从键盘输入两个整数,计算这两个数的最小公倍数和最大公约数并输出。参考程序如下: 
import java.util.Scanner;
public class GCDLCM{
// 求最大公约数(Greatest Common Divisor)
// 若 x > y, gcd(x,y)=gcd(x-y,y)
// 若 x < y, gcd(x,y)=gcd(x,y-x)
// 若 x = y, gcd(x,y)=x=y
public static int gcd(int x, int y){
if(x > y) 
return gcd(x – y, y);
if(x < y)
return gcd(x, y - x);
return x;
}
// 求最小公倍数(Least Common Multiple)
// 最小公倍数等于两数之积除以最大公约数
public static int lcm(int x, int y){
int gcd = gcd(x,y); // 求最大公约数
return  x*y / gcd;
}

public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入正整数x: ");
int a = sc.nextInt();
System.out.print("请输入正整数y: ");
int b = sc.nextInt();

System.out.println("最大公约数=" gcd(a,b));
System.out.println("最小公倍数=" lcm(a,b));  
}
}
318编写程序,求出1~1000的所有完全数。完全数是其所有因子(包括1但不包括该数本身)的和等于该数。例如,28=1 2 4 7 14,28就是一个完全数。参考程序如下: 
public class PerfectNumber{
public static void main(String args[]){
for(int n = 1;n <= 1000; n ){
int sum=1;
for(int k=2;k

if(n%k==0)

sum=sum k;

}

if(sum==n)

System.out.println(n);

else

continue;    

}
   

}

}

319编写程序读入一个整数,显示该整数的所有素数因子。例如,输入整数为120,输出应为2、2、2、3、5。参考程序如下: 

import java.util.Scanner;

public class PrimeFactor{

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

System.out.print("Input a number:");

int n=sc.nextInt();

do{

for(int k=2;k<=n;k ){

if(n%k==0){

System.out.println(k);

n=n/k;

break;

}

}

}while(n!=1);

}

}

320编写程序,计算当n=10000,20000,…,100000时,π的值。求π的近似值公式如下: 

π=4*1-13 15-17 19-111 113 … 12n-1-12n 1

参考程序如下: 

public class ComputePI{

public static void main(String[] args){

double pi;

double sum;

int n = 10000;   

int sign = 1;

for(n=10000;n<=100000;n =10000){

sum = 0;

for(int i = 1;i<= n;i ){

sign=(i%2==0)?-1:1;

sum=sum sign*(1.0/(2*i-1));

}

pi = 4 * sum;

System.out.println("n = " n);

System.out.println("PI = " pi);

}

}


}

Java语言程序设计(第3版)学习指导与习题解析 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Java语言程序设计(第3版)学习指导与习题解析