由皮鞋引起的Java娱乐中文版

由广州市皮鞋小分队《姚赞丰队》出品
起因是在仓库流水线看皮鞋,看的过程中十分无聊…真的是乏味的流水线哈哈哈,想不到好玩的东西,然后这个娱乐中文版就出来了,以后出去别人问你会不会Java就说会就行了(狗头)

让我们一起来看看这个娱乐小项目吧。

在这里插入图片描述
我目前只添加了这些修饰符、关键词和主要类型。

它是一个简易的Java翻译器,编译步骤我使用了javac!

在这里插入图片描述

总结一句话,能用就行

import java.util.HashMap;

public class ChineseJava {

	/*
	 *中文Java转原Java
	 *@姚赞丰 (2021-12-17)
	 *娱乐!!!下午看皮鞋款号时想到的娱乐项目:中文Java...
	 */

	static String EMPTY = "";
	static String SPACE = " ";
	//对应修饰符及关键字
	
	static HashMap<String,String> MOD = new HashMap<String,String>();
	//对应类型
	static HashMap<String,String> TYPE = new HashMap<String,String>();

	static {
		MOD.put("包", "package");
		MOD.put("引入", "import");
		MOD.put("类", "class");
		MOD.put("公共", "public");
		MOD.put("私有", "private");
		MOD.put("保护", "protected");
		MOD.put("静态", "static");
		MOD.put("容错", "try");
		MOD.put("俘获", "catch");
		MOD.put("无类型", "void");
		MOD.put("返回", "return");
		MOD.put("跳出", "break");
		MOD.put("创建","new");
		MOD.put("覆写","@Oberride");
		//更多关键词,修饰符请自己添加...

		TYPE.put("文本型", "String");
		TYPE.put("整数型", "int");
		TYPE.put("对象", "Object");
		TYPE.put("空", "null");
		//更多类型请自己添加...
	}

	public static String ToSourceJava(String chineseCode) {
		String result = null;
		try {

			//为所有行开头添加空格(检索该修饰词、关键或类型)
			StringBuffer chineseCodeBuffer = new StringBuffer();
			String[] chineseCodeArray = chineseCode.split("\n");
			for (String chineseCodeLine : chineseCodeArray) {
				chineseCodeBuffer.append(SPACE + chineseCodeLine + "\n");
			}
			chineseCodeBuffer.append(SPACE);
			chineseCode = chineseCodeBuffer.toString();

			StringBuffer code = new StringBuffer();
			String[] codeArray = chineseCode.split(EMPTY);
			int codeIndex = 0;
			boolean searching = true;//检索状态
			//String comment = null;
			boolean lineComment = false;//行注释状态
			boolean longComment = false;//块注释状态
			boolean type = false;
			StringBuffer types = new StringBuffer();
			StringBuffer findText = new StringBuffer();
			String upChars = null;//上个字符
			String lowChars = null;//下个字符
			for (String chars:codeArray) {

				try {
					upChars = codeArray[codeIndex + 1];
					lowChars = codeArray[codeIndex - 1];
				} catch (Exception exception) {}

				if (searching && (chars.equals("\"") || chars.equals("'"))) {
					//字符外,禁止检索开始
					code.append(chars);
					searching = false;
				} else if ((!searching) && (chars.equals("\"") || chars.equals("'"))) {
					//字符内,禁止检索结束
					code.append(chars);
					searching = true;
				}  else if (searching) {
					//检索

					if ((!lineComment) && (chars.equals("/") || upChars.equals("/"))) {
						//行注释开始
						code.append(findText.toString());
						findText = new StringBuffer();
						//code.append(chars);
						lineComment = true;
					} else if (lineComment && chars.equals("\n")) {
						//行注释结束
						//code.append(chars);
						lineComment = false;
					} else if ((!longComment) && (chars.equals("/") && upChars.equals("*"))) {
						//块注释开始
						code.append(findText.toString());
						findText = new StringBuffer();
						//code.append(chars);
						longComment = true;
					} else if (longComment && (chars.equals("*") && upChars.equals("/"))) {
						//块注释结束
						//code.append(chars);
						longComment = false;
					} else if (lineComment) {
						//行注释内检索
						//code.append(chars);
					}  else if (longComment) {
						//块注释内检索
						//code.append(chars);
					}

					else if ((!type) && (chars.equals("<") || chars.equals("("))) {
						//泛型、类型开始
						code.append(findText.toString());
						findText = new StringBuffer();
						code.append(chars);
						type = true;
					}  else if (type && (chars.equals(">") || chars.equals(")"))) {
						//泛型、类型结束
						if (TYPE.get(types.toString()) != null) {
							code.append(TYPE.get(types.toString()));
						} else {
							code.append(types.toString());
						}
						types = new StringBuffer();
						code.append(chars);
						type = false;
					}   else if (type && chars.equals(" ") || chars.equals(",")) {
						//泛型、类型(多个)
						if (TYPE.get(types.toString()) != null) {
							code.append(TYPE.get(types.toString()));
						} else {
							code.append(types.toString());
						}
						types = new StringBuffer();
						code.append(chars);
					}  else if (type) {
						if(!chars.equals(",")) {
							types.append(chars);
						}

					}

					else if (chars.equals(SPACE)) {
						//空格
						if (MOD.get(findText.toString()) != null) {
							//找到该修饰符、关键
							code.append(MOD.get(findText.toString()));
							findText = new StringBuffer();
						} else if (TYPE.get(findText.toString()) != null) {
							//找到类型
							code.append(TYPE.get(findText.toString()));
							findText = new StringBuffer();
						} else {
							//没有找到该修饰符、关键或类型
							code.append(findText.toString());
							findText = new StringBuffer();
						}
						code.append(chars);
					} else {
						findText.append(chars);//添加空格之间字符
					}

				}
				codeIndex++;
			}

			result = code.toString();
		} catch (Exception exception) {
			System.out.println(exception);
		}

		return result;
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值