XePog:XE編譯 日志

通過ChatGPT使用Java實(shí)現(xiàn)Xepog 1.0.2基礎(chǔ)版的功能
請(qǐng)幫我把這段python代碼用java寫出來:switch = True
xeN0 = '1'
xes = '1'
print('Welcome to use the Xunsky XE compiler!')
print('Xusnky XE/BinY 1.0.1')
print('Tip:請(qǐng)盡量按照標(biāo)準(zhǔn)書寫方法鍵入單詞或拼音\n避免y與x與其他雙1數(shù)字陣列混淆導(dǎo)致解譯困難')
#Gs = input
print('請(qǐng)選擇編譯格式:(XE_1.0/XE_2.0)')
zum = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',
? ? ? ?'s','t','u','v','w','x','y','z']
zummap = {'a':'#2','b':'#3','c':'#4','d':'#6','e':'#8','f':'#9','g':'#7','h':'#5',
? ? ? ? 'i':'*2','j':'*3','k':'*4','l':'*6','m':'*8','n':'*9','o':'*7','p':'*5',
? ? ? ? 'q':'#*2','r':'#*3','s':'#*4','t':'#*6','u':'#*8','v':'#*9','w':'#*7',
? ? ? ? 'x':'*#0','y':'*#1','z':'*#2'}
zumN0 = {'a':'/.././','b':'/../../','c':'/../.../','d':'/..//.','e':'/..//..','f':'/..//...','g':'/..///.','h':'/..///..',
? ? ? ? 'i':'/././','j':'/./../','k':'/./.../','l':'/.//.','m':'/.//..','n':'/.//...','o':'/.///.','p':'/.///..',
? ? ? ? 'q':'/..././','r':'/.../../','s':'/.../.../','t':'/...//.','u':'/...//..','v':'/...//...','w':'/...///.',
? ? ? ? 'x':'///.','y':'////','z':'///./'}
zum0 = {'/':'1','.':'0'}
try :
? ? while switch == True:
? ? ? ? keea = input("請(qǐng)輸入英文\n").lower()
? ? ? ? print('井星碼:')
? ? ? ? for i in keea.lower():
? ? ? ? ? ? xes = zummap[i]
? ? ? ? ? ? print(zummap[i],end="")
? ? ? ? print('\n電碼:')
? ? ? ? for i in keea:
? ? ? ? ? ? print(zumN0[i],end="")
? ? ? ? out = input('\n***持續(xù)運(yùn)行***\n若要關(guān)閉程序,請(qǐng)輸入C,否之繼續(xù)')
? ? ? ? if out.lower() == 'c':
? ? ? ? ? ? switch = False
? ? ? ? else:
? ? ? ? ? ? switch = True
except :
? ? er = input('編譯錯(cuò)誤,請(qǐng)輸入標(biāo)準(zhǔn)的英文字母!')
ChatGPT 3.5:
以下是使用Java語言將該P(yáng)ython代碼轉(zhuǎn)換而來的示例:
```java
import java.util.HashMap;
import java.util.Scanner;
public class XunskyCompiler {
? ? public static void main(String[] args) {
? ? ? ? boolean switchVar = true;
? ? ? ? String xeN0 = "1";
? ? ? ? String xes = "1";
? ? ? ? System.out.println("Welcome to use the Xunsky XE compiler!");
? ? ? ? System.out.println("Xusnky XE/BinY 1.0.1");
? ? ? ? System.out.println("Tip:請(qǐng)盡量按照標(biāo)準(zhǔn)書寫方法鍵入單詞或拼音\n避免y與x與其他雙1數(shù)字陣列混淆導(dǎo)致解譯困難");
? ? ? ? System.out.println("請(qǐng)選擇編譯格式:(XE_1.0/XE_2.0)");
? ? ? ? String[] zum = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r",
? ? ? ? ? ? ? ? "s","t","u","v","w","x","y","z"};
? ? ? ? HashMap<String, String> zummap = new HashMap<>();
? ? ? ? zummap.put("a", "#2");
? ? ? ? zummap.put("b", "#3");
? ? ? ? zummap.put("c", "#4");
? ? ? ? zummap.put("d", "#6");
? ? ? ? zummap.put("e", "#8");
? ? ? ? zummap.put("f", "#9");
? ? ? ? zummap.put("g", "#7");
? ? ? ? zummap.put("h", "#5");
? ? ? ? zummap.put("i", "*2");
? ? ? ? zummap.put("j", "*3");
? ? ? ? zummap.put("k", "*4");
? ? ? ? zummap.put("l", "*6");
? ? ? ? zummap.put("m", "*8");
? ? ? ? zummap.put("n", "*9");
? ? ? ? zummap.put("o", "*7");
? ? ? ? zummap.put("p", "*5");
? ? ? ? zummap.put("q", "#*2");
? ? ? ? zummap.put("r", "#*3");
? ? ? ? zummap.put("s", "#*4");
? ? ? ? zummap.put("t", "#*6");
? ? ? ? zummap.put("u", "#*8");
? ? ? ? zummap.put("v", "#*9");
? ? ? ? zummap.put("w", "#*7");
? ? ? ? zummap.put("x", "*#0");
? ? ? ? zummap.put("y", "*#1");
? ? ? ? zummap.put("z", "*#2");
? ? ? ? HashMap<String, String> zumN0 = new HashMap<>();
? ? ? ? zumN0.put("a", "//.././");
? ? ? ? zumN0.put("b", "/../../");
? ? ? ? zumN0.put("c", "//../.../");
? ? ? ? zumN0.put("d", "/..//./");
? ? ? ? zumN0.put("e", "/..//../");
? ? ? ? zumN0.put("f", "/..//.../");
? ? ? ? zumN0.put("g", "/..///./");
? ? ? ? zumN0.put("h", "/..///../");
? ? ? ? zumN0.put("i", "/././");
? ? ? ? zumN0.put("j", "/./../");
? ? ? ? zumN0.put("k", "/./.../");
? ? ? ? zumN0.put("l", "/.//./");
? ? ? ? zumN0.put("m", "/.//../");
? ? ? ? zumN0.put("n", "/.//.../");
? ? ? ? zumN0.put("o", "/.///./");
? ? ? ? zumN0.put("p", "/.///../");
? ? ? ? zumN0.put("q", "/..././");
? ? ? ? zumN0.put("r", "/.../../");
? ? ? ? zumN0.put("s", "/.../.../");
? ? ? ? zumN0.put("t", "/...//./");
? ? ? ? zumN0.put("u", "/...//../");
? ? ? ? zumN0.put("v", "/...//.../");
? ? ? ? zumN0.put("w", "/...///./");
? ? ? ? zumN0.put("x", "///./");
? ? ? ? zumN0.put("y", "////");
? ? ? ? zumN0.put("z", "///./");
? ? ? ? try {
? ? ? ? ? ? Scanner scanner = new Scanner(System.in);
? ? ? ? ? ? while (switchVar) {
? ? ? ? ? ? ? ? System.out.print("請(qǐng)輸入英文: ");
? ? ? ? ? ? ? ? String input = scanner.nextLine().toLowerCase();
? ? ? ? ? ? ? ? System.out.println("井星碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? String xesValue = zummap.get(String.valueOf(ch));
? ? ? ? ? ? ? ? ? ? System.out.print(xesValue);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.println("\n電碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? String zumN0Value = zumN0.get(String.valueOf(ch));
? ? ? ? ? ? ? ? ? ? System.out.print(zumN0Value);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.print("\nEnter 'C' to exit, otherwise continue: ");
? ? ? ? ? ? ? ? String choice = scanner.nextLine();
? ? ? ? ? ? ? ? if (choice.equalsIgnoreCase("C")) {
? ? ? ? ? ? ? ? ? ? switchVar = false;
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? switchVar = true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? scanner.close();
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("編譯錯(cuò)誤,請(qǐng)輸入標(biāo)準(zhǔn)的英文字母!");
? ? ? ? }
? ? }
}
```
注意:在Java中,我們使用Scanner類來讀取用戶的輸入。在這個(gè)示例中,我們使用了Scanner來讀取用戶輸入的英文文本,并進(jìn)行相應(yīng)的轉(zhuǎn)換和輸出。
為了實(shí)現(xiàn)這些功能,需要使用一些Java的類和方法,這就導(dǎo)致了較多的代碼量。但是,使用Java編寫代碼的好處是可以實(shí)現(xiàn)更復(fù)雜的功能,并且具有良好的可讀性和可維護(hù)性。
如果你對(duì)Java編程不熟悉,可能會(huì)覺得這些代碼量較多,但隨著對(duì)Java的熟悉程度的提高,你會(huì)發(fā)現(xiàn)Java可以幫助你實(shí)現(xiàn)更多更復(fù)雜的功能。
優(yōu)化1
ChatGPT 3.5:
當(dāng)然可以對(duì)上述代碼進(jìn)行一些優(yōu)化,以減少代碼量并提高可讀性。下面是優(yōu)化后的代碼示例:
```java
import java.util.HashMap;
import java.util.Scanner;
public class MorseCodeConverter {
? ? public static void main(String[] args) {
? ? ? ? HashMap<String, String> zummap = new HashMap<>();
? ? ? ? zummap.put("a", "#2");
? ? ? ? zummap.put("b", "#3");
? ? ? ? zummap.put("c", "#4");
? ? ? ? zummap.put("d", "#6");
? ? ? ? zummap.put("e", "#8");
? ? ? ? zummap.put("f", "#9");
? ? ? ? zummap.put("g", "#7");
? ? ? ? zummap.put("h", "#5");
? ? ? ? zummap.put("i", "*2");
? ? ? ? zummap.put("j", "*3");
? ? ? ? zummap.put("k", "*4");
? ? ? ? zummap.put("l", "*6");
? ? ? ? zummap.put("m", "*8");
? ? ? ? zummap.put("n", "*9");
? ? ? ? zummap.put("o", "*7");
? ? ? ? zummap.put("p", "*5");
? ? ? ? zummap.put("q", "#*2");
? ? ? ? zummap.put("r", "#*3");
? ? ? ? zummap.put("s", "#*4");
? ? ? ? zummap.put("t", "#*6");
? ? ? ? zummap.put("u", "#*8");
? ? ? ? zummap.put("v", "#*9");
? ? ? ? zummap.put("w", "#*7");
? ? ? ? zummap.put("x", "*#0");
? ? ? ? zummap.put("y", "*#1");
? ? ? ? zummap.put("z", "*#2");
? ? ? ? HashMap<String, String> zumN0 = new HashMap<>();
? ? ? ? zumN0.put("a", "//.././");
? ? ? ? zumN0.put("b", "/../../");
? ? ? ? zumN0.put("c", "//../.../");
? ? ? ? zumN0.put("d", "/..//./");
? ? ? ? zumN0.put("e", "/..//../");
? ? ? ? zumN0.put("f", "/..//.../");
? ? ? ? zumN0.put("g", "/..///./");
? ? ? ? zumN0.put("h", "/..///../");
? ? ? ? zumN0.put("i", "/././");
? ? ? ? zumN0.put("j", "/./../");
? ? ? ? zumN0.put("k", "/./.../");
? ? ? ? zumN0.put("l", "/.//./");
? ? ? ? zumN0.put("m", "/.//../");
? ? ? ? zumN0.put("n", "/.//.../");
? ? ? ? zumN0.put("o", "/.///./");
? ? ? ? zumN0.put("p", "/.///../");
? ? ? ? zumN0.put("q", "/..././");
? ? ? ? zumN0.put("r", "/.../../");
? ? ? ? zumN0.put("s", "/.../.../");
? ? ? ? zumN0.put("t", "/...//./");
? ? ? ? zumN0.put("u", "/...//../");
? ? ? ? zumN0.put("v", "/...//.../");
? ? ? ? zumN0.put("w", "/...///./");
? ? ? ? zumN0.put("x", "///./");
? ? ? ? zumN0.put("y", "////");
? ? ? ? zumN0.put("z", "///./");
? ? ? ? try (Scanner scanner = new Scanner(System.in)) {
? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? System.out.print("請(qǐng)輸入英文: ");
? ? ? ? ? ? ? ? String input = scanner.nextLine().toLowerCase();
? ? ? ? ? ? ? ? System.out.println("井星碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? String xesValue = zummap.getOrDefault(String.valueOf(ch), "");
? ? ? ? ? ? ? ? ? ? System.out.print(xesValue);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.println("\n電碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? String zumN0Value = zumN0.getOrDefault(String.valueOf(ch), "");
? ? ? ? ? ? ? ? ? ? System.out.print(zumN0Value);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.print("\nEnter 'C' to exit, otherwise continue: ");
? ? ? ? ? ? ? ? String choice = scanner.nextLine();
? ? ? ? ? ? ? ? if (choice.equalsIgnoreCase("C")) {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("編譯錯(cuò)誤,請(qǐng)輸入標(biāo)準(zhǔn)的英文字母!");
? ? ? ? }
? ? }
}
```
優(yōu)化后的代碼主要進(jìn)行了以下幾點(diǎn)改進(jìn):
1. 使用`getOrDefault`方法來獲取HashMap中的值,這樣可以避免在輸入非英文字母時(shí)拋出異常。
2. 使用`try-with-resources`語句來自動(dòng)關(guān)閉Scanner對(duì)象,這樣可以避免手動(dòng)關(guān)閉Scanner。
3. 簡化了循環(huán)條件,使用`while (true)`來代替`switchVar`變量。
4. 使用`break`語句來退出循環(huán),而不是設(shè)置`switchVar`變量為`false`。
5. 刪除了不必要的注釋和空行,使代碼更加簡潔。
這些優(yōu)化主要是針對(duì)代碼的簡潔性和可讀性進(jìn)行的,以減少冗余代碼并提高代碼的可讀性和可維護(hù)性。
優(yōu)化2
ChatGPT 3.5:
當(dāng)然可以!以下是進(jìn)一步優(yōu)化和精簡后的代碼:
```java
import java.util.HashMap;
import java.util.Scanner;
public class Main {
? ? public static void main(String[] args) {
? ? ? ? HashMap<String, String> zummap = new HashMap<>();
? ? ? ? zummap.put("a", "#2");
? ? ? ? zummap.put("b", "#3");
? ? ? ? zummap.put("c", "#4");
? ? ? ? zummap.put("d", "#6");
? ? ? ? zummap.put("e", "#8");
? ? ? ? zummap.put("f", "#9");
? ? ? ? zummap.put("g", "#7");
? ? ? ? zummap.put("h", "#5");
? ? ? ? zummap.put("i", "*2");
? ? ? ? zummap.put("j", "*3");
? ? ? ? zummap.put("k", "*4");
? ? ? ? zummap.put("l", "*6");
? ? ? ? zummap.put("m", "*8");
? ? ? ? zummap.put("n", "*9");
? ? ? ? zummap.put("o", "*7");
? ? ? ? zummap.put("p", "*5");
? ? ? ? zummap.put("q", "#*2");
? ? ? ? zummap.put("r", "#*3");
? ? ? ? zummap.put("s", "#*4");
? ? ? ? zummap.put("t", "#*6");
? ? ? ? zummap.put("u", "#*8");
? ? ? ? zummap.put("v", "#*9");
? ? ? ? zummap.put("w", "#*7");
? ? ? ? zummap.put("x", "*#0");
? ? ? ? zummap.put("y", "*#1");
? ? ? ? zummap.put("z", "*#2");
? ? ? ? HashMap<String, String> zumN0 = new HashMap<>();
? ? ? ? zumN0.put("a", "//.././");
? ? ? ? zumN0.put("b", "/../../");
? ? ? ? zumN0.put("c", "//../.../");
? ? ? ? zumN0.put("d", "/..//./");
? ? ? ? zumN0.put("e", "/..//../");
? ? ? ? zumN0.put("f", "/..//.../");
? ? ? ? zumN0.put("g", "/..///./");
? ? ? ? zumN0.put("h", "/..///../");
? ? ? ? zumN0.put("i", "/././");
? ? ? ? zumN0.put("j", "/./../");
? ? ? ? zumN0.put("k", "/./.../");
? ? ? ? zumN0.put("l", "/.//./");
? ? ? ? zumN0.put("m", "/.//../");
? ? ? ? zumN0.put("n", "/.//.../");
? ? ? ? zumN0.put("o", "/.///./");
? ? ? ? zumN0.put("p", "/.///../");
? ? ? ? zumN0.put("q", "/..././");
? ? ? ? zumN0.put("r", "/.../../");
? ? ? ? zumN0.put("s", "/.../.../");
? ? ? ? zumN0.put("t", "/...//./");
? ? ? ? zumN0.put("u", "/...//../");
? ? ? ? zumN0.put("v", "/...//.../");
? ? ? ? zumN0.put("w", "/...///./");
? ? ? ? zumN0.put("x", "///./");
? ? ? ? zumN0.put("y", "////");
? ? ? ? zumN0.put("z", "///./");
? ? ? ? try (Scanner scanner = new Scanner(System.in)) {
? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? System.out.print("請(qǐng)輸入英文: ");
? ? ? ? ? ? ? ? String input = scanner.nextLine().toLowerCase();
? ? ? ? ? ? ? ? System.out.println("井星碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? System.out.print(zummap.getOrDefault(String.valueOf(ch), ""));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.println("\n電碼:");
? ? ? ? ? ? ? ? for (char ch : input.toCharArray()) {
? ? ? ? ? ? ? ? ? ? System.out.print(zumN0.getOrDefault(String.valueOf(ch), ""));
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? System.out.print("\nEnter 'C' to exit, otherwise continue: ");
? ? ? ? ? ? ? ? if (scanner.nextLine().equalsIgnoreCase("C")) {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } catch (Exception e) {
? ? ? ? ? ? System.out.println("編譯錯(cuò)誤,請(qǐng)輸入標(biāo)準(zhǔn)的英文字母!");
? ? ? ? }
? ? }
}
```
在這個(gè)優(yōu)化后的代碼中,我進(jìn)一步簡化了循環(huán)體中的代碼,將獲取HashMap中的值和打印輸出的邏輯放在了循環(huán)中,避免了重復(fù)的代碼。此外,還簡化了退出循環(huán)的判斷條件,直接將用戶輸入與"C"進(jìn)行比較,避免了使用額外的變量。這些優(yōu)化使得代碼更加簡潔和清晰。