日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 默认站点!

默认站点

當前位置: 首頁 >

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

發布時間:2023/12/3 33 豆豆
默认站点 收集整理的這篇文章主要介紹了 网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網頁益智游戲怎么制作

Java 12以實驗形式提供了switch表達式以及switch和break語句的新形式。 對于可能很少用到的構造,有大量的新語法和語義-當然,對于那些困惑者和認證考試問題的作者來說,這是一件了不起的禮物。 如果您喜歡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; }

值break與return完全相同,但在內部循環和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真是太好了。 沒有失敗。 無需重復case 。 switch語句變得令人羨慕。

因此,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;}};
  • 語法錯誤
  • 有無限循環
  • n設置為0
  • n設為1
  • 翻譯自: https://www.javacodegeeks.com/2018/12/give-me-break-make-awesome-puzzlers.html

    網頁益智游戲怎么制作

    總結

    以上是默认站点為你收集整理的网页益智游戏怎么制作_休息一下,或者:如何使用Java 12制作出色的益智游戏...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得默认站点網站內容還不錯,歡迎將默认站点推薦給好友。