Java编程思想-第四章练习题
练习1:写一个程序,打印从1到100的值
public class Print1To100{
public static void main(String args[]){
for(int i = 1 ; i <= 100 ; i++){
System.out.println("value:" + i) ;
}
}
}
练习2:写一个程序,产生25个int类型的随机数。对于每个随机值,使用if-else语句来将其分类为大于、小于或等于紧随它而随机生成的值。
public class RandomNumber{
public static void main(String args[]){
int i = 0 ;
Random rand =new Random() ;//实例化Random()
int num1 = 0 ;
while(i<25){
int num2 = rand.nextInt(100) ;//产生一个100以内的整数
System.out.print(num2) ;
if(num1 == num2){//比较新生成的数值是否和前一个数值是否相等
System.out.println(" = The previous number") ;
}
else if(num1 < num2){//比较新生成的数值是否大于前一个数值
System.out.println(" > The previous number") ;
}
else{比较新生成的数值是否小于前一个数值
System.out.println(" < The previous number") ;
}
num1 = num2 ;
i++ ;
}
}
}
练习3:修改练习2,把代码用一个while无线循环包括起来。然后运行它直至用键盘中断其运行(Ctrl+C)。
public class RandomNumber{
public static void main(String args[]){
int i = 0 ;
Random rand =new Random() ;//实例化Random()
int num1 = 0 ;
while(true){//终止条件修改为true
int num2 = rand.nextInt(100) ;//产生一个100以内的整数
System.out.print(num2) ;
if(num1 == num2){//比较新生成的数值是否和前一个数值是否相等
System.out.println(" = The previous number") ;
}
else if(num1 < num2){//比较新生成的数值是否大于前一个数值
System.out.println(" > The previous number") ;
}
else{比较新生成的数值是否小于前一个数值
System.out.println(" < The previous number") ;
}
num1 = num2 ;
i++ ;
}
}
}
练习4:写一个程序,使用两个嵌套for循环和取余操作符(%)来探测和打印素数。
public class PrimeNumber{
static boolean isPrimeNum(int num){//判断是否是素数
for(int i = 2; i < Math.abs(num) ; i++){
if(num%i == 0){
return false ;//不是素数返回false
}
}
return true ;//是素数返回true
}
public static void main(String args[]){
for(int i = -100 ; i < 1000 ; i++){
if(isPrimeNum(i)){//调用isPrimeNum()方法
System.out.println(i) ;
}
}
}
}
练习5:重复第三章练习10,不要用Integer.toBinaryString()方法,而是用三元操作符和按位操作符来进行显示二进制的1和0.
这一题没有做。。。
练习6:修改前两个程序中的两个test()方法,让他们接受两个额外的参数begin和end,这样在测试testval时将判断它是否在begin和end之间的范围(包含begin和end)。
练习7:修改本章练习1,通过使用break关键词,使得程序在打印99时退出。然后尝试使用return来达到相同的目的。
public class Print1To100{
public static void main(String args[]){
for(int i = 1 ; i <= 100 ; i++){
if(i == 99){
break ;
}
System.out.println("value:" + i) ;
}
}
}
练习8:写一个switch开关语句,为每个case打印一条消息。然后把这个switch放进for循环来测试每个case。先让每个case后面都有break,然后把break删除测试。
public class SwitchTest{
public static void main(String[] args) {
for(int i = 0 ; i < 10 ; i++){
switch(i){
case 1:System.out.println("case 1") ;
break ;
case 2:System.out.println("case 2") ;
break ;
case 3:System.out.println("case 3") ;
break ;
case 4:System.out.println("case 4") ;
break ;
case 5:System.out.println("case 5") ;
break ;
case 6:System.out.println("case 6") ;
break ;
default:System.out.println("default") ;
}
}
}
}
练习9:一个斐波那契数列由数字1、1、2、3、5、8、13、21、34等等组成的,其中每个数字(第三个数字起)都是前两个数字的之和。
public class Fibonacci{
public static void main(String[] args) {
int len = Integer.parseInt(args[0]);//取出参数
int num1 = 1 ;//初始化变量
int num2 = 1 ;
int num3 = 0 ;
for(int i = 2 ; i < len ; i++){//循环打印出指定的长度
num3 = num1 + num2 ;//前两个数相加等于等三个数
num1 = num2 ; //交换数值
num2 = num3 ;
System.out.print(num3 + ",") ;
}
}
}
练习10:吸血鬼数字是指位数为偶数的数字,可以有一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字。以两个0结尾的数字是不允许的,例如一下吸血鬼数字:
1260 = 21 * 60
1827 = 21 * 87
写一个程序找出4位数所有的吸血鬼数字。
public class Vampire{
public static void main(String[] args) {
String[] ar_str1 , ar_str2 ;
for(int num = 1000 ; num <= 10000 ; num++){//设定被除数为4位数
for(int divisor = 10 ; divisor < 100 ; divisor++){//设定除数为两位数
int num1 = num / divisor ;
int remainder = num % divisor ;//余数
int remainder1 = divisor % 10 ;
int remainder2 = num1 % 10 ;
//判断是否为吸血鬼数字
if(remainder == 0 && (remainder1 != 0 || remainder2 != 0)){//判断是否能够被整除,且两个除数末尾不全为0
ar_str1 = String.valueOf(num).split("") ;//把num拆分成单个字符
ar_str2 = (String.valueOf(num1) + String.valueOf(divisor)).split("") ;//把num1和divisor拆分成字符
java.util.Arrays.sort(ar_str1) ;//num排序
java.util.Arrays.sort(ar_str2) ;
if(java.util.Arrays.equals(ar_str1, ar_str2)){//比较num是否和num1+divisor相同,如果相同打印,并终止内嵌的循环
System.out.println(num + "=" + divisor + "*" + num1) ;
break ;
}
}
}
}
}
}
Java编程思想-第四章练习题的更多相关文章
- 《Java编程思想第四版》附录 B 对比 C++和 Java
<Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...
- Java编程思想 第21章 并发
这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...
- java编程思想第四版中net.mindview.util包下载,及源码简单导入使用
在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...
- Java编程思想第四版勘误
坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...
- Java编程思想——第17章 容器深入研究 读书笔记(三)
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...
- Java编程思想——第17章 容器深入研究(two)
六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...
- Java编程思想第四版完整中文高清版.pdf
Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...
- 《Java编程思想第四版完整中文高清版.pdf》-笔记
D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...
- 《Java编程思想第四版》附录 C Java 编程规则
附录 C Java 编程规则 本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符 ...
随机推荐
- jboss7 加载module过程
1. 调试类: org.jboss.as.server.Main的main方法 断点: Module.registerURLStreamHandlerFactoryModule(Module.getB ...
- 27个Jupyter Notebook使用技巧及快捷键(翻译版)
Jupyter Notebook Jupyter Notebook 以前被称为IPython notebook.Jupyter Notebook是一款能集各种分析包括代码.图片.注释.公式及自己画的图 ...
- ajax的来龙去脉
这是我在博客园写的第一遍博客,之前都是只看不写,在园子里学到了不少的东西,现在也想着把自己的一些感悟写出来给大家分享一下. ajax技术可以说是Web2.0应用程序的技术基础,尽管软件经销商和开源社区 ...
- #ifndef #define #endif 的用法
1.文件中的#ifndef 头件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都include了同一个头文件.而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来 ...
- 将用户信息保存到Cookie中
/** * 把用户保存到Cookie * * @param request * @param response * @param member */ private void rememberPwdA ...
- poj 3349 (最小表示法)
开始按hash做的 交上去就wa 但是和标称拍了半天也没有不一样的 可能是生成的数据太水了吧... #include<iostream> #include<cstdio> #i ...
- Html.RenderAction简单用法
一 Html.ActionLink("actionName") 调用页与当前页位于同一个控制器,可直接调用,显示对应的视图 二 Html.ActionLink("acti ...
- (转)xml节点和元素的关系 .
XML节点是什么呢?当我们在处理XML文件的时候必须要明白XML节点的概念,那么从这里的讲述,你将会了解XML节点对于XML文件的意义,希望对你有所帮助. 在我们学习LINQ删除XML节点之前我们先来 ...
- js十进制等互相转换
//十进制转其他 var x=110; alert(x); alert(x.toString(8)); alert(x.toString(32)); alert(x.toString(16)); / ...
- The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. (关于jdbc)
The last packet sent successfully to the server was milliseconds ago. The driver has not received an ...