继上一篇 "如果诸葛亮用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 源码

定义的一些类、枚举

public enum 王道 {明, 昏}

/*
* 先帝,陛下,文景,桓灵
*/
static class 君 {
public String 名称;
public boolean 在;
public 王道 为君; public 君() {
在 = true;
为君 = 王道.明;
} public boolean 创业(double percentage) {
if (percentage < 0.5) {
在 = false;
System.out.println("创业未半而中道崩殂!");
return false;
} else {
System.out.println("兴复汉室,还于旧都!");
return true;
}
} public void 开张圣听() {
System.out.println("开张圣听,光先帝遗德!");
} public void 恢弘志士之气() {
} public void 宾自菲薄() {
} public void 引喻失义() {
System.out.println("塞忠谏之路!");
} public void 亲贤臣远小人() {
为君 = 王道.明;
} public void 亲小人远贤臣() {
为君 = 王道.昏;
} public void 治国() {
} public void 偏私() {
System.out.println("内外异法!");
} public boolean 咨之(String 事) {
if (王道.明 == 为君) {
return true;
} return false;
} public boolean 施行(String 事) {
return true;
} public void 曰(String 言) {
System.out.println(言);
} public void 每与臣论此事() {
System.out.println("叹息痛恨于桓灵。");
}
} static enum 臣德 {贤, 奸} static class 侍卫之臣 {
private 君 刘备 = new 君();
private 君 刘禅 = new 君(); public String 名称;
public 臣德 为臣; public void 不懈于内() {
System.out.println("侍卫之臣" + 名称 + "不懈于内");
} public boolean 追先帝之殊遇() {
if (刘备.为君 == 王道.明) {
return true;
} else {
return false;
}
} public boolean 报之于陛下() {
if (刘禅.为君 == 王道.明) {
return true;
} else {
return false;
}
} public boolean 谋事(String 事) {
if (为臣 == 臣德.贤) {
return true;
} return false;
}
} static class 忠志之士 {
private 君 刘备 = new 君();
private 君 刘禅 = new 君(); public String 名称;
public 臣德 为臣 = 臣德.贤; public void 忘身于外() {
System.out.println("忠志之士" + 名称 + "忘身于外!");
} public boolean 追先帝之殊遇() {
if (刘备.为君 == 王道.明) {
return true;
} else {
return false;
}
} public boolean 报之于陛下() {
if (刘禅.为君 == 王道.明) {
return true;
} else {
return false;
}
} public boolean 谋事(String 事) {
if (为臣 == 臣德.贤) {
return true;
} return false;
}
} public static enum 气候 {兴盛, 疲弊, 兴隆, 倾颓} /*
* 曹魏,东吴,益州,先汉,后汉
*/
public static class 国 {
public 气候 国运; public 国() {
国运 = 气候.兴盛;
} public void 付诸有司论其刑赏(侍卫之臣 臣) {
if (臣.为臣 == 臣德.贤) {
System.out.println("赏!");
} else {
System.out.println("刑!");
}
}
} /*
* 郭攸之,费祎
*/
public static class 侍中 extends 侍卫之臣 {
} ; /*
* 董允
*/
public static class 侍郎 extends 侍卫之臣 {
} /*
* 陈震
*/
public static class 尚书 extends 侍卫之臣 {
} /*
* 张裔
*/
public static class 长史 extends 侍卫之臣 {
} /*
* 蒋琬
*/
public static class 参季 extends 侍卫之臣 {
} /*
* 向宠
*/
static class 中都督 extends 忠志之士 {
} /*
* 诸葛亮
*/
static class 丞相 extends 侍卫之臣 {
public void 回首往事() {
System.out.println("臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸候。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值巅覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。");
} public void 表忠心() {
System.out.println("先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明。故五月渡泸,深入不毛。");
} public void 请战() {
System.out.println("今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室, 还于旧都。");
} public void 道别() {
System.out.println("今当远离, 临表涕零, 不知所言。");
}
}

Javamain方法

public static void main(String[] args) {
君 先帝 = new 君();
先帝.名称 = "先帝";
先帝.创业(0.49); 国 益州 = new 国();
益州.国运 = 气候.疲弊; System.out.println("此诚危急存亡之秋也!"); 侍中 郭攸之 = new 侍中();
郭攸之.名称 = "郭攸之";
if (郭攸之.追先帝之殊遇() && 郭攸之.报之于陛下()) {
郭攸之.不懈于内();
} 侍中 费祎 = new 侍中();
费祎.名称 = "费祎";
if (费祎.追先帝之殊遇() && 费祎.报之于陛下()) {
费祎.不懈于内();
} 侍郎 董允 = new 侍郎();
董允.名称 = "董允";
if (董允.追先帝之殊遇() && 董允.报之于陛下()) {
董允.不懈于内();
} 中都督 向宠 = new 中都督();
向宠.名称 = "向宠";
if (向宠.追先帝之殊遇() && 向宠.报之于陛下()) {
向宠.忘身于外();
} 君 陛下 = new 君();
if (陛下.为君 == 王道.明) {
陛下.开张圣听();
陛下.恢弘志士之气();
} else {
陛下.宾自菲薄();
陛下.引喻失义();
} 陛下.治国(); boolean 宫中 = false;
boolean 府中 = false;
boolean 陟臧 = false;
boolean 罚否 = false;
assert (宫中 == 府中);
assert (陟臧 == 罚否); 侍卫之臣 作奸犯科者 = new 侍卫之臣();
作奸犯科者.为臣 = 臣德.奸;
侍卫之臣 为忠善者 = new 侍卫之臣();
为忠善者.为臣 = 臣德.贤;
if (陛下.为君 == 王道.明) {
益州.付诸有司论其刑赏(作奸犯科者);
益州.付诸有司论其刑赏(为忠善者);
} else {
陛下.偏私();
} if (郭攸之.为臣 == 臣德.贤
&& 费祎.为臣 == 臣德.贤
&& 董允.为臣 == 臣德.贤) {
System.out.println("此皆良实,志虑忠纯,是以先帝简拔以遗陛下。");
} String 宫中之事 = null;
if (陛下.咨之(宫中之事)
&& 郭攸之.谋事(宫中之事)
&& 费祎.谋事(宫中之事)
&& 董允.谋事(宫中之事)) { 陛下.施行(宫中之事);
System.out.println("裨补阙病, 有所广益");
} if (向宠.为臣 == 臣德.贤) {
System.out.println("性行淑均,晓畅军事。");
System.out.print("先帝称之曰:");
先帝.曰("能");
System.out.println("是以众议举宠为督。");
} String 营中之事 = null;
if (陛下.咨之(营中之事)) {
陛下.施行(宫中之事);
System.out.println("行阵和睦,优劣得所!");
} 君 文景 = new 君();
君 恒灵 = new 君();
国 先汉 = new 国();
国 后汉 = new 国(); 文景.亲贤臣远小人();
先汉.国运 = 气候.兴隆;
恒灵.亲小人远贤臣();
后汉.国运 = 气候.倾颓; do {
先帝.每与臣论此事();
} while (先帝.在); if (郭攸之.为臣 == 臣德.贤
&& 费祎.为臣 == 臣德.贤
&& 董允.为臣 == 臣德.贤) {
System.out.println("此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。");
} 丞相 诸葛亮 = new 丞相();
诸葛亮.回首往事();
诸葛亮.表忠心();
诸葛亮.请战(); // 此臣所以报先帝而忠陛下之职分也
诸葛亮.道别();
}

代码输出《出师表》

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

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

如果诸葛亮会编程,用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. Qt+FFmpeg仿VLC接收RTSP流并播放

    关键词:Qt FFmpeg C++ RTSP RTP VLC 内存泄漏 摘要认证 花屏 源码 UDP 本系列原文地址. 下载直接可运行的源码,在原文顶部. 效果 产生RTSP流 比播放文件复杂一点是, ...

  2. 2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组。 两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少? 如果没有有效方法,返回-

    2023-12-20:用go语言,给定一个数组arr,长度为n,在其中要选两个不相交的子数组. 两个子数组的累加和都要是T,返回所有满足情况中,两个子数组长度之和最小是多少? 如果没有有效方法,返回- ...

  3. C++ Qt开发:SqlTableModel映射组件应用

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍SqlTabl ...

  4. CentOS系统中yum的基本用法

    最小化安装系统时,yum可能会因为网卡配置问题,随机启动配置,导致无法使用, 在shell里面输入:yum --help ,结果显示 yum 已经正常安装了!!到底是哪里出了问题呢?经过网友的提示,我 ...

  5. C语言之检验三边能否构成三角形

    要求: 编写程序检验由三边能否构成三角形,检验方法是任意两边和均要大于第三边. 输出格式:若结果可以构成,输出YES,否则输出ERROR DATA 其实很简单,运用与逻辑运算符&&判断 ...

  6. SQLite3使用笔记(2)——插入

    目录 1. 论述 2. 总结 1. 论述 如同上一篇文章SQLite3使用笔记(1)--查询所述,使用SQLite进行查询操作同样有两种方式.对于比较简单的表格插入,使用sqlite3_exec()接 ...

  7. Java 插入Excel页眉、页脚

    前言 在Excel文档中,我们常用页眉页脚来显示文档的附加信息,例如日期.公司名称.Logo或作者信息等.本文将通过Java程序来介绍如何给Excel文档添加页眉页脚.代码示例主要从以下几方面来演示添 ...

  8. 认识Java的整形数据结构

    摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用? 本文分享自华为云社区<[Java]对基本类型-整型数据结构的认识>,作者: huahua.Dr . 整型数据 ...

  9. 遥居前列!华为云GaussDB再获行业权威验证

    摘要:北京国家金融科技认证中心正式公布了2022年通过"分布式数据库金融标准验证"的数据库产品名单.华为云GaussDB金融级分布式数据库以突出的技术优势通过验证,跃然榜上,且测试 ...

  10. 再获信通院权威认证,优等生华为云GaussDB数据库凭什么?

    摘要:在八大项测试中,华为云 GaussDB的两款数据库都以优异的成绩通过.那么这两款数据库究竟是凭借什么获此殊荣呢? 近期,中国信通院公布了第十三批数据库产品基础能力.性能和稳定性评审结果.在本次评 ...