网页益智游戏怎么制作

Java 12以实验形式提供了switch表达式以及switchbreak语句的新形式。 对于可能很少用到的构造,有大量的新语法和语义-当然,对于那些困惑者和认证考试问题的作者来说,这是一件了不起的礼物。 如果您喜欢Java拼图游戏,并且可能想自己创建一些游戏,请继续阅读。

Java 12表达式开关

Java的12只引入了一个表达切换 -a版本的switch是一个表达式,而不是一个声明。 这是一个简单的示例:

enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };
public static int numLetters(Day day) {return switch (day) {case MONDAY, FRIDAY, SUNDAY -> 6;case TUESDAY -> 7;case THURSDAY, SATURDAY -> 8;default -> 9;};
}

真好。

请注意,这种形式的switch是一个表达式 。 在这种情况下,它的值是return语句中的表达式。 您还可以将switch表达式分配给变量,将其作为方法参数传递,并执行Java中的表达式可以执行的所有其他操作。

该图简要说明了它:

表达 声明
双向分支 ? : if / else
多路分支 switch switch

为多向分支表达式指定一个运算符会更加一致吗? 当然可以,但是……插入邪恶的笑声……这样我们就可以做更好的益智游戏!

前进。 试试看。 您在哪里可以使用表达式? 当然在switch语句中。

switch (switch (...) { case ... -> ...; case ... -> ... }) {case ...: ...; case ...: ...;
}

填写一些有趣的内容...然后询问结果是什么。 还要选择“它不会编译”。 (这就是答案。请注意表达式switch的第二个case分支中缺少的分号。)

此表达式switch具有显着的功能: 不会掉线 。 您不必在每个case分支的末尾都放个break

太好了-缺少break是一个常见错误。 但是对于益智游戏制造商来说,这似乎是倒退了一步。

别失望 我要给你带来好消息。

价值突破

假设您要在分支之一中记录某些内容。

case TUESDAY -> { logger.info("Belgium?"); 7 } // Not legal Java

那是Scala语法。 在Scala中,块是一个表达式,其值是该块的最后一个表达式。 在此示例中,为7。但是Java没有块表达式。

Java 12(其版本号使我们想到了圣诞节的12个夜晚),带有一个给拼图游戏者的礼物:一个新的break声明。 它的目的是从case分支的一个块中返回一个值:

case TUESDAY -> { logger.info("Belgium?"); break 7; }

顺便说一句, ->专门用来提醒您lambda表达式。 在lambda表达式中,您有类似的问题。 假设您有一个产生表达式的lambda表达式。

Runnable task = () -> 42;

现在,您想添加一个日志记录调用。 您做的事情很相似:

表达 声明
拉姆达 Runnable r = () -> 42; Runnable r = () -> { logger.log(...); return 42; };
case分支 case ... -> 42; case ... -> { logger.log(...); break 42; }

顺便说一句,老鹰眼的读者会注意到,该表的一个象限中没有末端分号。 更多益智游戏材料…

这个break语句确实像return 。 它可以嵌套在另一个块中,然后跳到外面,产生值。

case ... -> { if (n % 2 == 0) break 42; else { logger.log(...); break 21; } }

当然,在loop和switch语句中, break含义已经不同。 例如,这是非法的:

case ... -> {for (int i = 0; i < a.length; i++) {if (a[i] == x) break i; // Error}break -1;
}

breakreturn完全相同,但在内部循环和switch语句中除外,这是禁止的。 继续吧-立即解决这个问题。 你知道你想。

标记的休息

早在1995年,Java 1.0就引入了诸如类和接口,垃圾回收和Unicode字符串之类的创新,同时坚持使用C语言语法来编写许多程序员熟悉的控制结构。 除了一个小变化。

在Java中,您可以使用带标签的 break中断嵌套循环,并到达循环的结尾 ,该循环的开头具有匹配的标签。 像这样:

int i = 0;
int j = 0;
found:
while (i < a.length) {while (j < a[i].length) {if (a[i][j] == x) break found;j++;}i++;
}
// Execution continues here after break found;

您曾经使用此功能吗? 如果没有,请不要担心。 除了认证考试,很少有人参加。

如果您在带有break foo;case有一个循环,该怎么办? ? 这完全取决于。 如果foo作为封闭循环的标签出现,则有一个标记为break的标签。 如果不是,并且foo是一个变量,则您有一个break值。 如果你们两个都有呢? 那是语法错误。

继续,做一个令人困惑的事情。 你知道你想。

箭头开关语句

再看看表达式switch语法。 你可以说

case MONDAY, FRIDAY, SUNDAY ->

代替

case MONDAY: case FRIDAY: case SUNDAY:

很好-替代方法看起来很奇怪:

case MONDAY -> case FRIDAY -> case SUNDAY -> // Just kidding

表情switch真是太好了。 没有失败。 无需重复caseswitch语句变得令人羡慕。

因此,Java设计师决定变得不错,并允许它参与其中。 您现在可以编写:

switch (day) {case MONDAY, FRIDAY, SUNDAY -> // No repeating of casenumLetters = 6; // No fallthrough after ->case TUESDAY -> { logger.info("Tuesday"); numLetters = 7; } case THURSDAY, SATURDAY -> numLetters = 8; default -> numLetters = 9;
}

顽皮开关表达式

现在该轮到表情switch 。 现在switch语句有两种形式:顽皮(1970年左右)和nice(2018年)。 如果表情switch想要调皮,会跌倒怎么办?

这是2 x 2图的谬误出现的地方:

表达 声明
没有失败
int numLetters = switch (day) {case MONDAY, FRIDAY, SUNDAY -> 6;case TUESDAY -> 7;case THURSDAY, SATURDAY -> 8;default -> 9;
};
switch (day) {case MONDAY, FRIDAY, SUNDAY ->numLetters = 6;case TUESDAY -> {logger.info("Tuesday");numLetters = 7;}case THURSDAY, SATURDAY ->numLetters = 8;default ->numLetters = 9;
}
跌倒
???
switch(day) {case MONDAY, FRIDAY, SUNDAY:numLetters = 6;break;case TUESDAY:logger.info("Tuesday");numLetters = 7;break;case THURSDAY:logger.info("Thursday");      case SATURDAY:numLetters = 8;break;default:numLetters = 9;
}

我们真的需要填写缺失的象限吗?

显然是的。

int numLetters = switch(day) {case MONDAY, FRIDAY, SUNDAY:break 6;case TUESDAY:logger.info("Tuesday");break 7;case THURSDAY:logger.info("Thursday"); // Fallthroughcase SATURDAY:break 8;default:break 9;
};

您可以在同一switch混合case ...:case ... ->吗? 可悲的是没有。 曾经有人考虑过这一点,但是反益智游戏游说组织了这一天。

您可以为第一个分支执行case MONDAY: case FRIDAY: case SUNDAY:吗? 您可以为此感到困惑,但是到那时,您的听众可能已经失去了生存的意愿。

为您准备的圣诞节前益智游戏

当我对所有这些进行演讲时,我知道我必须做一个困惑者。 这个开关调皮还是不错? 它有什么作用?

int n = 0;n = switch (n) {case 0:n++;default: {O:while (n > 0) {if (n == 1) break O;n--;}if (n > 0) break n;elsebreak 0;}};
  1. 语法错误
  2. 有无限循环
  3. n设置为0
  4. n设为1

翻译自: https://www.javacodegeeks.com/2018/12/give-me-break-make-awesome-puzzlers.html

网页益智游戏怎么制作

网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...相关推荐

  1. 休息一下,或者:如何使用Java 12制作出色的拼图游戏

    Java 12以实验形式提供了switch表达式以及switch和break语句的新形式. 对于可能很少用到的构造,有大量新语法和语义,当然,对于那些困惑者和认证考试问题的作者来说,这是一件了不起的礼 ...

  2. python编程制作_一种Python编程创作平台的制作方法

    本发明涉及在线浏览器技术领域,特别涉及一种Python编程创作平台. 背景技术: 目前项目整体使用javascript+html+css实现,用户界面编写上使用react框架.具体实现上是将pytho ...

  3. java项目制作成可安装exe程序

    java项目制作成可安装exe程序 文章目录 java项目制作成可安装exe程序 1.制作可安装的exe程序步骤 2. IDEA项目导出jar包 2.1. 打开project Structure 2. ...

  4. html静态网页制作的博客,[推荐]初学制作静态网页HTML推荐标准_

    [推荐]初学制作静态网页HTML推荐标准_ (2012-05-19 10:46:32) 标签: 网页 制作 杂谈 a双 定义一个链接name=text 本网页内目标名称(书签),可为数字或文本href ...

  5. HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码...

    HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML ...

  6. HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码

    HTML5汽车网页设计成品_学生DW汽车静态网页设计代做_web课程设计网页制作_宽屏大气汽车自驾游网站模板html源码 临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML ...

  7. svg动画制作_制作第一个SVG动画

    svg动画制作 Story of a designer trying to code animations instead of asking a dev to figure it out. 一位设计 ...

  8. 动画 制作_您希望制作的10个醒目的徽标动画

    动画 制作 重点 (Top highlight) 标志设计 (Logo Design) Have you ever watched paint dry? No? I didn't think so. ...

  9. 塞尔达 amiibo数据_塞尔达传说:旷野之息Amiibo道具制作_碧海风云

    本文出自微信公众号[碧海风云]之<塞尔达传说:旷野之息Amiibo道具制作_碧海风云> Amiibo介绍 Amiibo是任天堂发行的内置NFC芯片的产品,可以在特定游戏中与Switch机器 ...

最新文章

  1. linux read函数_Linux中shell输入ls命令后会系统会发生什么
  2. DDP、DDU、DAP的区别你都知道吗?
  3. 科大星云诗社动态20220113
  4. oracle命令行打不开,关于oracle命令行上下左右键没法使用解决办法
  5. 同步关键词synchronized
  6. 关于在XP操作系统和IIS5.1环境下的MVC环境搭建之IIS错误
  7. 技能树 Web前端/php/JavaWeb/数据库
  8. 米聊关停;抖音支付正式上线;谷歌禁用第三方 Chromium 同步功能 | 极客头条
  9. TCP/IP学习笔记(2)-数据链路层
  10. 让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求
  11. 计算机专业英语复习第四天
  12. 生物信息学|基于多尺度特征融合的药物-药物相互作用预测
  13. Unity2019安卓平台新手安装设置建议
  14. php+flash头像上传组件
  15. Linux 网络基础 C语言常用API 快速翻阅笔记 (字节序篇)
  16. 虚拟机栈、堆、方法区的区别特点
  17. 出租车计价C语言程序
  18. Python+OpenCV教程5:颜色空间转换 追踪视频中特定颜色的物体 消除票据中的红色印章
  19. 【保姆级】黑客入门教程「Python安全攻防:渗透测试实战指南」经典纯狱风~
  20. ROS与ABB120

热门文章

  1. 【模板】差分约束算法
  2. 牛客网【每日一题】4月22日 K-th Number
  3. P1117-[NOI2016]优秀的拆分【SA】
  4. 概率期望题(期望 DP)做题记录
  5. Spark入门(三)Idea构建spark项目
  6. 一次堆外OOM问题的排查过程
  7. BigDecimal丢失精度的坑
  8. 通俗理解决策树算法中信息增益的
  9. Java数据库连接池--DBCP浅析
  10. JAVA元注解@interface详解(@Target,@Documented,@Retention,@Inherited)