题:一百盏灯排成一排,初始状态是亮的, 编号为 1-100,100个人编号1-100.每个人从1号灯开始逐次走过这100盏灯。每个人只拉他对应编号的倍数的灯,问最后亮着几盏灯?

这是一道很经典的笔试题、频繁出现。下面是比较简洁的实现代码、已验证。

1 package笔试;2

3 public class完全平方数100人和灯 {4 public static voidmain(String[] args) {5 boolean[] light=new boolean[100];6 for (int i = 0; i < light.length; i++) {7 for (int j = 0; j < light.length; j++) {8 if ((i+1)%(j+1)==0) {9 light[i]=!light[i];10 }11 }12 System.out.print("第"+(i+1)+"盏"+(light[i]?"亮 ":"灭 "));13 }14 }

16 }

运行结果是第 1 4 9 16 25 ...81 100 亮 其他90盏灭。其实就是求0 - 100内所有完全平方数。只有完全平方数的因数是奇数个。由于灯一开始是亮,只有保证按奇数次才能保证最后结果依然是亮。

顺便讲一下,Java的布尔类型。我们都知道Java的数据类型分为三大类,布尔型、字符型和数值型。其中Java的布尔类型的值,只能是true或false,不能用数字来代表,其他类型也不能转换成boolean类型。

Java布尔类型的默认值是false。why ?

我们知道计算编辑底层只能识别0,1,即通电和不通电状态。在默认情况下,为了节省资源,我们把不通电当成默认情况,也就是0,就是false。

Java布尔类型的简单代码验证:

1 packageTest;2 //Java布尔类型的默认值是false

3 public class布尔验证 {4 static booleanb1;5 public static voidmain(String[] args) {6 boolean b2 = true;7 String s= b2+" boolean类型转换成字符串";//" boolean类型转换成字符串"

8 boolean b3=!b2;9 System.out.println(b1);10 System.out.println(b2);11 System.out.println(b3);12 System.out.println(s);13 }14 }15 /*

16 运行结果:false17 true18 false19 true boolean类型转换成字符串20

21 */

对于实现完全平方数,只是输出正确结果,不适用嵌套for循环,更高效的执行代码是:

1 //一百人一百盏灯 求完全平方数题

2

3 public classpf {4

5 public static voidmain(String[] args) {6 int i=1,j=0;7 while(j<100){8 j=i*i;9 i++;10 System.out.print(j);11 }12 }

输出结果和上面一致。

原文:http://www.cnblogs.com/vivi-d/p/4020213.html

JAVA大厅有100盏灯,100人100盏灯(详解)相关推荐

  1. java中北大学ppt总结+课后习题第二章(小宇特详解)

    java中北大学ppt总结+课后习题第二章(小宇特详解) 基本数据类型 Java语言有8种基本数据类型. 逻辑类型:boolean.1字节 整数类型: 1字节整数类型:byte. 2字节整数类型:sh ...

  2. java获取request body_HttpServletRequest获取body内容(字符串/二进制)详解

    首页 > Java Web > SpringMvc应用 > HttpServletRequest HttpServletRequest获取body内容(字符串/二进制)详解 获取HT ...

  3. java中String s=abc及String s=new String(abc)详解

    java中String s="abc"及String s=new String("abc")详解 1.   栈(stack)与堆(heap)都是Java用来在R ...

  4. java一个方法排他调用_Java编程实现排他锁代码详解

    一 .前言 某年某月某天,同事说需要一个文件排他锁功能,需求如下: (1)写操作是排他属性 (2)适用于同一进程的多线程/也适用于多进程的排他操作 (3)容错性:获得锁的进程若Crash,不影响到后续 ...

  5. 蓝桥杯java B组历年省赛真题汇总及题目详解

    蓝桥杯java B组历年省赛真题汇总及题目详解 2019年第十届蓝桥杯省赛真题详解 2018年第九届蓝桥杯省赛真题详解 2017年第八届蓝桥杯省赛真题详解 2016年第七届蓝桥杯省赛真题详解 2015 ...

  6. 【JAVA秘籍心法篇-Spring】Spring XML解析源码详解

    [JAVA秘籍心法篇-Spring]Spring XML解析源码详解 所谓天下武功,无坚不摧,唯快不破.但有又太极拳法以快制慢,以柔克刚.武功外式有拳打脚踢,刀剑棍棒,又有内功易筋经九阳神功.所有外功 ...

  7. 2022年Java面试总结,200多页真题笔记和详解(核心考点、6家大厂)

    为了进大厂,花了很多时间和精力在面试准备上,也刷了很多题.但题刷多了有点怀疑人生,不知道刷的这些题在之后的工作中能不能用到,如果只是为面试而刷题是不是在浪费人生呢? 如果你想进大厂,或者去一个更大.更 ...

  8. Java设计模式之七大结构型模式(附实例和详解)

    博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛.因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻.当然,你没 ...

  9. java中 enum什么意思_Java中枚举Enum的使用详解

    在某些情况下,一个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类: 在 Java 中使用 enum 关键字来定义枚举类,其地位与 clas ...

  10. java中的json_JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

最新文章

  1. 一体化设计让容灾变简单
  2. Jenkins 设置镜像_Windows Docker Agent 镜像可以常规使用了
  3. win10格式化linux分区,直接删除linux分区再重装linux可以恢復启动么,我是直接在win10里把linux mint...
  4. 【转】make makefile cmake qmake都是什么,有什么区别?
  5. 织梦 tags.php静态化,dedecms网站tag标签全部静态化的解决方法
  6. 利用Python操作Excel实现自动化办公
  7. Matlab符号计算与数值计算对比
  8. 福玛特机器人评测_离子净化!福玛特E-R350W扫地机器人试玩
  9. Android 游戏设计教程:游戏元素和工具
  10. mysql中my.cnf不生效解决
  11. Golang学习 - unicode 包
  12. 【软件安装故障排除】安装完PyCharm,启动时弹出“Failed to load JVM DLL\bin\server\jvm.dll“解决方案
  13. CS61B学习笔记——proj3 CS61BYoW的要求及实现
  14. ecplise使用及配置
  15. 解决socket连接超时问题
  16. 怎样制作一个二维MG动画
  17. 近代数学史上的最大冤案
  18. 异质信息网络分析与应用综述
  19. (六)scroll-view 组件
  20. ubuntu16 nvidia 1660ti安装驱动

热门文章

  1. PMP备考应该采购哪些书籍用于学习?
  2. 华为HCNA实验19-21
  3. qt控制程序打开记事本_QT记事本的读写函数
  4. 【面试真题】9月下旬的运维面试中出现的高频笔试题
  5. pip不是内部 pycharm_Pycharm中pip的升级
  6. Keil调试显示波形方法
  7. moviepy音视频剪辑基类VideoClip的write_videofile方法codec、bitrate、preset、audio_bitrate、audio_nbytes等参数的作用
  8. 模板匹配算法_计算机视觉方向简介 | 多目标跟踪算法(附源码)
  9. matlab如何读取excel文件中的数据?_Python自动化之从Excel文件读取数据
  10. HyperLPR车牌识别库代码分析(6)