当前位置:首页|资讯|ChatGPT|编程

XePog:XE编译 日志

作者:Chuxiaaa发布时间:2023-07-05

通过ChatGPT使用Java实现Xepog 1.0.2基础版的功能

请帮我把这段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:请尽量按照标准书写方法键入单词或拼音\n避免y与x与其他双1数字阵列混淆导致解译困难')

#Gs = input

print('请选择编译格式:(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("请输入英文\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***持续运行***\n若要关闭程序,请输入C,否之继续')

        if out.lower() == 'c':

            switch = False

        else:

            switch = True

except :

    er = input('编译错误,请输入标准的英文字母!')


ChatGPT 3.5:


以下是使用Java语言将该Python代码转换而来的示例:


```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:请尽量按照标准书写方法键入单词或拼音\n避免y与x与其他双1数字阵列混淆导致解译困难");

        System.out.println("请选择编译格式:(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("请输入英文: ");

                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("编译错误,请输入标准的英文字母!");

        }

    }

}

```


注意:在Java中,我们使用Scanner类来读取用户的输入。在这个示例中,我们使用了Scanner来读取用户输入的英文文本,并进行相应的转换和输出。


为了实现这些功能,需要使用一些Java的类和方法,这就导致了较多的代码量。但是,使用Java编写代码的好处是可以实现更复杂的功能,并且具有良好的可读性和可维护性。


如果你对Java编程不熟悉,可能会觉得这些代码量较多,但随着对Java的熟悉程度的提高,你会发现Java可以帮助你实现更多更复杂的功能。


优化1

ChatGPT 3.5:


当然可以对上述代码进行一些优化,以减少代码量并提高可读性。下面是优化后的代码示例:


```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("请输入英文: ");

                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("编译错误,请输入标准的英文字母!");

        }

    }

}

```


优化后的代码主要进行了以下几点改进:


1. 使用`getOrDefault`方法来获取HashMap中的值,这样可以避免在输入非英文字母时抛出异常。

2. 使用`try-with-resources`语句来自动关闭Scanner对象,这样可以避免手动关闭Scanner。

3. 简化了循环条件,使用`while (true)`来代替`switchVar`变量。

4. 使用`break`语句来退出循环,而不是设置`switchVar`变量为`false`。

5. 删除了不必要的注释和空行,使代码更加简洁。


这些优化主要是针对代码的简洁性和可读性进行的,以减少冗余代码并提高代码的可读性和可维护性。


优化2

ChatGPT 3.5:


当然可以!以下是进一步优化和精简后的代码:


```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("请输入英文: ");

                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("编译错误,请输入标准的英文字母!");

        }

    }

}

```


在这个优化后的代码中,我进一步简化了循环体中的代码,将获取HashMap中的值和打印输出的逻辑放在了循环中,避免了重复的代码。此外,还简化了退出循环的判断条件,直接将用户输入与"C"进行比较,避免了使用额外的变量。这些优化使得代码更加简洁和清晰。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1