练习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编程思想-第四章练习题的更多相关文章

  1. 《Java编程思想第四版》附录 B 对比 C++和 Java

    <Java编程思想第四版完整中文高清版.pdf>-笔记 附录 B 对比 C++和 Java “作为一名 C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且 Java 的语法无疑是 ...

  2. Java编程思想 第21章 并发

    这是在2013年的笔记整理.现在重新拿出来,放在网上,重新总结下. 两种基本的线程实现方式 以及中断 package thread; /** * * @author zjf * @create_tim ...

  3. java编程思想第四版中net.mindview.util包下载,及源码简单导入使用

    在java编程思想第四版中需要使用net.mindview.util包,大家可以直接到http://www.mindviewinc.com/TIJ4/CodeInstructions.html 去下载 ...

  4. Java编程思想第四版勘误

    坊间传说这本书翻译得很烂,我倒觉得还好.虽然看原文更准确,但是如果在具备一定编程思维和基础.能够看出来疑问的情况下,还是看中文更快一些,而且这本书本身也不适合初学者看.当然,错误和不通顺还是有的,而且 ...

  5. Java编程思想——第17章 容器深入研究 读书笔记(三)

    七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: ad ...

  6. Java编程思想——第17章 容器深入研究(two)

    六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add ...

  7. Java编程思想第四版完整中文高清版.pdf

    Java编程思想第四版完整中文高清版.pdf 链接: https://pan.baidu.com/s/1vV5BHF3L-bnaG6WGurdJ_A 提取码: vigy 复制这段内容后打开百度网盘手机 ...

  8. 《Java编程思想第四版完整中文高清版.pdf》-笔记

    D.2.1 安插自己的测试代码 插入下述“显式”计时代码,对程序进行评测: long start = System.currentTimeMillis(); // 要计时的运算代码放在这儿 long ...

  9. 《Java编程思想第四版》附录 C Java 编程规则

    附录 C Java 编程规则 本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导: (1) 类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符 ...

随机推荐

  1. 让jquery easyui datagrid列支持绑定嵌套对象

    嵌套对象是指返回的json数据,是对象的某个属性自带有属性.而我们恰恰又需要这个属性,默认情况下easyui的datagrid是不支持绑定嵌套对象的.比如:datagrid的field属性只能为fie ...

  2. JSP九个隐式对象及作用域

    out:JspWriter实例对象,作用域为page(页面执行期) 向客户端输出内容 request:HttpServletRequest实例对象,作用域为request(用户请求期) 请求信息 re ...

  3. wildcard

    [rusky@rhel7 test]$ lstest1  test123  test2  test317  test33  test335  test336  test44  testtest[rus ...

  4. NYOJ 214 最长上升子序列nlogn

    普通的思路是O(n2)的复杂度,这个题的数据量太大,超时,这时候就得用nlogn的复杂度的算法来做,这个算法的主要思想是只保存有效的序列,即最大递增子序列,然后最后得到数组的长度就是最大子序列.比如序 ...

  5. 转 - markdown 简明语法

    Markdown是一种极简的『标记语言』,将文本转为HTML,通常为我大码农所用.其不追求大而全,简洁至上,正所谓不求最贵,只求最好! 本文介绍Markdown基本语法,内容很少,一行语法一行示例,学 ...

  6. sql server根据日期或者月份查询聚合数据

    /*****************************根据时间查询每天的数据***************************************/ @tm_start:开始时间 @tm ...

  7. DIV布局之道一:DIV块的水平并排、垂直并排

    DIV布局网页元素的方式主要有三种:平铺(并排).嵌套.覆盖(遮挡).本文先讲解平铺(并排)方式. 1.垂直平铺(垂直排列) 请看如下代码 CSS部分: CSS Code复制内容到剪贴板 .lay1{ ...

  8. PHP与memcache和memcached以及安装使用

    老规则,在作者寒冰讲之前我们要来明确memcache与memcached这两个东西到底是什么? 说法一: 两个不同版本的php的memcached的客户端 new memcache是pecl扩展库版本 ...

  9. HTML5 microdata

    schema.org 测试地址 http://www.google.com/webmasters/tools/richsnippets

  10. MySQL查看数据库大小、表大小和最后修改时间

    查看数据库表基本信息. select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA = ' ...