继上一篇 "如果诸葛亮用C#写出师表..."后,站长想自己的第一语言是Java,虽然平时工作上用的不多,也用Java实现一遍吧,改改就是了,无非就是:

  1. C#Console.WriteLine改为JavaSystem.out.println
  2. C#string改为JavaString
  3. C#bool改为Javaboolean
  4. C#的继承符号:改为Javaextends
  5. C#的断言Debug.Assert改为Javaassert

不到半个小时,Java版出师表就新鲜出炉了,和上篇声明一样,纯粹无聊写着玩,读者别在意枚举、类名、变量中文命名,纯粹为了娱乐。


出师表背景再来一次

今天让我们码农以特有的方式,来表达对丞相大人的敬仰与怀念!

蜀章武元年(221年),刘备称帝,诸葛亮为丞相。蜀汉建兴元年(223年),刘备病死,将刘禅托付给诸葛亮。诸葛亮实行了一系列比较正确的政治和经济措施,使蜀汉境内呈现兴旺景象。为了实现全国统一,诸葛亮在平息南方叛乱之后,于建兴五年(227年)决定北上伐魏,拟夺取魏的长安,临行之前上书后主,即这篇《出师表》。

Java 源码

定义的一些类、枚举

  1. public enum 王道 {明, 昏}
  2. /*
  3. * 先帝,陛下,文景,桓灵
  4. */
  5. static class {
  6. public String 名称;
  7. public boolean 在;
  8. public 王道 为君;
  9. public 君() {
  10. = true;
  11. 为君 = 王道.明;
  12. }
  13. public boolean 创业(double percentage) {
  14. if (percentage < 0.5) {
  15. = false;
  16. System.out.println("创业未半而中道崩殂!");
  17. return false;
  18. } else {
  19. System.out.println("兴复汉室,还于旧都!");
  20. return true;
  21. }
  22. }
  23. public void 开张圣听() {
  24. System.out.println("开张圣听,光先帝遗德!");
  25. }
  26. public void 恢弘志士之气() {
  27. }
  28. public void 宾自菲薄() {
  29. }
  30. public void 引喻失义() {
  31. System.out.println("塞忠谏之路!");
  32. }
  33. public void 亲贤臣远小人() {
  34. 为君 = 王道.明;
  35. }
  36. public void 亲小人远贤臣() {
  37. 为君 = 王道.昏;
  38. }
  39. public void 治国() {
  40. }
  41. public void 偏私() {
  42. System.out.println("内外异法!");
  43. }
  44. public boolean 咨之(String 事) {
  45. if (王道.明 == 为君) {
  46. return true;
  47. }
  48. return false;
  49. }
  50. public boolean 施行(String 事) {
  51. return true;
  52. }
  53. public void 曰(String 言) {
  54. System.out.println(言);
  55. }
  56. public void 每与臣论此事() {
  57. System.out.println("叹息痛恨于桓灵。");
  58. }
  59. }
  60. static enum 臣德 {贤, 奸}
  61. static class 侍卫之臣 {
  62. private 刘备 = new 君();
  63. private 刘禅 = new 君();
  64. public String 名称;
  65. public 臣德 为臣;
  66. public void 不懈于内() {
  67. System.out.println("侍卫之臣" + 名称 + "不懈于内");
  68. }
  69. public boolean 追先帝之殊遇() {
  70. if (刘备.为君 == 王道.明) {
  71. return true;
  72. } else {
  73. return false;
  74. }
  75. }
  76. public boolean 报之于陛下() {
  77. if (刘禅.为君 == 王道.明) {
  78. return true;
  79. } else {
  80. return false;
  81. }
  82. }
  83. public boolean 谋事(String 事) {
  84. if (为臣 == 臣德.贤) {
  85. return true;
  86. }
  87. return false;
  88. }
  89. }
  90. static class 忠志之士 {
  91. private 刘备 = new 君();
  92. private 刘禅 = new 君();
  93. public String 名称;
  94. public 臣德 为臣 = 臣德.贤;
  95. public void 忘身于外() {
  96. System.out.println("忠志之士" + 名称 + "忘身于外!");
  97. }
  98. public boolean 追先帝之殊遇() {
  99. if (刘备.为君 == 王道.明) {
  100. return true;
  101. } else {
  102. return false;
  103. }
  104. }
  105. public boolean 报之于陛下() {
  106. if (刘禅.为君 == 王道.明) {
  107. return true;
  108. } else {
  109. return false;
  110. }
  111. }
  112. public boolean 谋事(String 事) {
  113. if (为臣 == 臣德.贤) {
  114. return true;
  115. }
  116. return false;
  117. }
  118. }
  119. public static enum 气候 {兴盛, 疲弊, 兴隆, 倾颓}
  120. /*
  121. * 曹魏,东吴,益州,先汉,后汉
  122. */
  123. public static class {
  124. public 气候 国运;
  125. public 国() {
  126. 国运 = 气候.兴盛;
  127. }
  128. public void 付诸有司论其刑赏(侍卫之臣 臣) {
  129. if (臣.为臣 == 臣德.贤) {
  130. System.out.println("赏!");
  131. } else {
  132. System.out.println("刑!");
  133. }
  134. }
  135. }
  136. /*
  137. * 郭攸之,费祎
  138. */
  139. public static class 侍中 extends 侍卫之臣 {
  140. }
  141. ;
  142. /*
  143. * 董允
  144. */
  145. public static class 侍郎 extends 侍卫之臣 {
  146. }
  147. /*
  148. * 陈震
  149. */
  150. public static class 尚书 extends 侍卫之臣 {
  151. }
  152. /*
  153. * 张裔
  154. */
  155. public static class 长史 extends 侍卫之臣 {
  156. }
  157. /*
  158. * 蒋琬
  159. */
  160. public static class 参季 extends 侍卫之臣 {
  161. }
  162. /*
  163. * 向宠
  164. */
  165. static class 中都督 extends 忠志之士 {
  166. }
  167. /*
  168. * 诸葛亮
  169. */
  170. static class 丞相 extends 侍卫之臣 {
  171. public void 回首往事() {
  172. System.out.println("臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸候。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值巅覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。");
  173. }
  174. public void 表忠心() {
  175. System.out.println("先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明。故五月渡泸,深入不毛。");
  176. }
  177. public void 请战() {
  178. System.out.println("今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室, 还于旧都。");
  179. }
  180. public void 道别() {
  181. System.out.println("今当远离, 临表涕零, 不知所言。");
  182. }
  183. }

Javamain方法

  1. public static void main(String[] args) {
  2. 先帝 = new 君();
  3. 先帝.名称 = "先帝";
  4. 先帝.创业(0.49);
  5. 益州 = new 国();
  6. 益州.国运 = 气候.疲弊;
  7. System.out.println("此诚危急存亡之秋也!");
  8. 侍中 郭攸之 = new 侍中();
  9. 郭攸之.名称 = "郭攸之";
  10. if (郭攸之.追先帝之殊遇() && 郭攸之.报之于陛下()) {
  11. 郭攸之.不懈于内();
  12. }
  13. 侍中 费祎 = new 侍中();
  14. 费祎.名称 = "费祎";
  15. if (费祎.追先帝之殊遇() && 费祎.报之于陛下()) {
  16. 费祎.不懈于内();
  17. }
  18. 侍郎 董允 = new 侍郎();
  19. 董允.名称 = "董允";
  20. if (董允.追先帝之殊遇() && 董允.报之于陛下()) {
  21. 董允.不懈于内();
  22. }
  23. 中都督 向宠 = new 中都督();
  24. 向宠.名称 = "向宠";
  25. if (向宠.追先帝之殊遇() && 向宠.报之于陛下()) {
  26. 向宠.忘身于外();
  27. }
  28. 陛下 = new 君();
  29. if (陛下.为君 == 王道.明) {
  30. 陛下.开张圣听();
  31. 陛下.恢弘志士之气();
  32. } else {
  33. 陛下.宾自菲薄();
  34. 陛下.引喻失义();
  35. }
  36. 陛下.治国();
  37. boolean 宫中 = false;
  38. boolean 府中 = false;
  39. boolean 陟臧 = false;
  40. boolean 罚否 = false;
  41. assert (宫中 == 府中);
  42. assert (陟臧 == 罚否);
  43. 侍卫之臣 作奸犯科者 = new 侍卫之臣();
  44. 作奸犯科者.为臣 = 臣德.奸;
  45. 侍卫之臣 为忠善者 = new 侍卫之臣();
  46. 为忠善者.为臣 = 臣德.贤;
  47. if (陛下.为君 == 王道.明) {
  48. 益州.付诸有司论其刑赏(作奸犯科者);
  49. 益州.付诸有司论其刑赏(为忠善者);
  50. } else {
  51. 陛下.偏私();
  52. }
  53. if (郭攸之.为臣 == 臣德.贤
  54. && 费祎.为臣 == 臣德.贤
  55. && 董允.为臣 == 臣德.贤) {
  56. System.out.println("此皆良实,志虑忠纯,是以先帝简拔以遗陛下。");
  57. }
  58. String 宫中之事 = null;
  59. if (陛下.咨之(宫中之事)
  60. && 郭攸之.谋事(宫中之事)
  61. && 费祎.谋事(宫中之事)
  62. && 董允.谋事(宫中之事)) {
  63. 陛下.施行(宫中之事);
  64. System.out.println("裨补阙病, 有所广益");
  65. }
  66. if (向宠.为臣 == 臣德.贤) {
  67. System.out.println("性行淑均,晓畅军事。");
  68. System.out.print("先帝称之曰:");
  69. 先帝.曰("能");
  70. System.out.println("是以众议举宠为督。");
  71. }
  72. String 营中之事 = null;
  73. if (陛下.咨之(营中之事)) {
  74. 陛下.施行(宫中之事);
  75. System.out.println("行阵和睦,优劣得所!");
  76. }
  77. 文景 = new 君();
  78. 恒灵 = new 君();
  79. 先汉 = new 国();
  80. 后汉 = new 国();
  81. 文景.亲贤臣远小人();
  82. 先汉.国运 = 气候.兴隆;
  83. 恒灵.亲小人远贤臣();
  84. 后汉.国运 = 气候.倾颓;
  85. do {
  86. 先帝.每与臣论此事();
  87. } while (先帝.在);
  88. if (郭攸之.为臣 == 臣德.贤
  89. && 费祎.为臣 == 臣德.贤
  90. && 董允.为臣 == 臣德.贤) {
  91. System.out.println("此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。");
  92. }
  93. 丞相 诸葛亮 = new 丞相();
  94. 诸葛亮.回首往事();
  95. 诸葛亮.表忠心();
  96. 诸葛亮.请战(); // 此臣所以报先帝而忠陛下之职分也
  97. 诸葛亮.道别();
  98. }

代码输出《出师表》

  1. 创业未半而中道崩殂!
  2. 此诚危急存亡之秋也!
  3. 侍卫之臣郭攸之不懈于内
  4. 侍卫之臣费祎不懈于内
  5. 侍卫之臣董允不懈于内
  6. 忠志之士向宠忘身于外!
  7. 开张圣听,光先帝遗德!
  8. 刑!
  9. 赏!
  10. 性行淑均,晓畅军事。
  11. 先帝称之曰:能
  12. 是以众议举宠为督。
  13. 行阵和睦,优劣得所!
  14. 叹息痛恨于桓灵。
  15. 臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸候。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值巅覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。
  16. 先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明。故五月渡泸,深入不毛。
  17. 今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室, 还于旧都。
  18. 今当远离, 临表涕零, 不知所言。

时间如流水,只能流去不流回。

如果诸葛亮会编程,用Java写出师表...的更多相关文章

  1. 学了编译原理能否用 Java 写一个编译器或解释器?

    16 个回答 默认排序​ RednaxelaFX JavaScript.编译原理.编程 等 7 个话题的优秀回答者 282 人赞同了该回答 能.我一开始学编译原理的时候就是用Java写了好多小编译器和 ...

  2. java 操作Excel表 创建 查看 修改

    需要用到jxl.jar包  修改有两种方法一种是jxl的  另一种需要apache.poi包 package excelChuLi; import java.io.File; import java. ...

  3. Java正則表達式入门

     众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一 ...

  4. Delphi在win7/vista下写注册表等需要管理员权限的解决方案

    看到论坛好多人问win7下写注册表的问题,我结合自己的理解写了一点东西,首先声明一下,本人初学Delphi,水平有限,大家见笑了,有什么不对之处请老鸟多指点. [背景]win7/Vista提供的UAC ...

  5. 为什么函数式编程在Java中很危险?

    摘要:函数式编程这个不温不火的语言由来已久.有人说,这一年它会很火,尽管它很难,这也正是你需要学习的理由.那么,为什么函数式编程在Java中很危险呢?也许这个疑问普遍存在于很多程序员的脑中,作者Ell ...

  6. java访问权限表

    private(私有的) 默认的(什么都不写) protected(受保护的) public(公共的 ) 同一个类中 yes   yes yes   yes 同一个包中不同类之间 no yes yes ...

  7. java正則表達式 match、find匹配位置

    如题.对于java正則表達式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个样例.例如以下: String ss="ooaaoo"; Pattern pt=Pattern.c ...

  8. 描述一下你最常用的编程风格---JAVA

    描述一下你最常用的编程风格---JAVA     描述一下你最常用的编程风格---JAVA   (1)类名首字母应该大写.字段.方法以及对象(句柄)的首字母应小写.对于所有标识符,其中包含的所有单词都 ...

  9. 33.JAVA编程思想——JAVA IO File类

    33.JAVA编程思想--JAVA IO File类 RandomAccessFile用于包括了已知长度记录的文件.以便我们能用 seek()从一条记录移至还有一条:然后读取或改动那些记录. 各记录的 ...

  10. socket编程(Java实现)

    主要是前段时间学习的网络知识的基于TCP与UDP编程,Java实现简单的大小写字母的转化,该文主要参考: https://blog.csdn.net/yjp19871013/article/detai ...

随机推荐

  1. 【笔记整理】requests使用代理

    使用proxies参数传递代理信息 import requests if __name__ == '__main__': proxies = { # 这个字典的key不可以乱写,必须是http和htt ...

  2. Swagger配置类

    Swagger配置类 package com.guoba.servicebase.config; import com.google.common.base.Predicates; import or ...

  3. iMessage群发,iMessage群发功能,iMessage群发功能设计,iMessage群发系统

    在数字通讯时代,群发消息已经成为我们日常生活中不可或缺的一部分,无论是商务.社交还是日常沟通,群发功能都大大提高了消息传递的效率和便利性. 而在众多的通讯软件中,iMessage无疑是其中的佼佼者,今 ...

  4. ORA-28579 在从外部过程代理程序回调时,发生网络错误,ORA-06512 在"SDE.ST_GEOMETRY_SHAPELIB_PKG"

    如图所示,在执行sde.st_transform方法时报错. 环境是arcgis10.8  oracle是12C,版本号是v12.1.0.2.0 但是执行ST_GEOMETRY方法是可以的,说明配置没 ...

  5. Kafka 具体分析

    前面的相关文件简要地介绍了 Kafka 的基本使用,本文将将要介绍一下关于 Kafka 的集群关系.存储结构以及架构方面的内容进行简要的解析 组件之间的关系 Kafka 中,各个组件之间的关系如下图所 ...

  6. 基于OpenCV的语音数据读取

      1)进入http://yuyin.baidu.com/app,在弹出的界面中单击要针对哪个应用开通语音识别服务,个人测试可全选 (开通个人认证,白嫖)     注意: 1.百度语音识别API对于要 ...

  7. 2021-01-25:redis中,哨兵如何选举?

    福哥答案2021-01-25: 答案1: redis-sentinel故障转移的流程: 1.当多个sentinel发现并确认了master有问题. 2.接着会选举出一个sentinel作为领导. 3. ...

  8. 记录:excel导入导出js-xlsx,处理合并

    效果 前情提要 后端传excel坐标数据,前端自己处理模板,找资料后,选择直接载入xlsx方式. 准备工作 npm i xlsx import * as XLSX from 'xlsx' 方法一:数据 ...

  9. 华为云黄瑾:做强坚实数据底座,GaussDB与产业携手共进

    近日,华为全球智慧金融峰会2023在上海顺利举行,华为云副总裁.战略与产业发展部总裁黄瑾发表了<做强坚实数据底座,GaussDB与产业携手共进>的主题演讲. 以下为演讲实录: 尊敬的各位来 ...

  10. 这项评测,华为云GaussDB(for MySQL)顺利通过

    摘要:近日,中国信息通信研究院(简称"中国信通院")公布了第十五批"可信数据库"评测结果.华为云GaussDB(for MySQL)凭借过硬的技术实力顺利通过& ...