首页 > 其他分享 >11.29每日总结

11.29每日总结

时间:2023-11-29 21:24:36浏览次数:83  
标签:总结 翻译 return String 每日 11.29 static import new

今天进行软件构造的实验一

实验一:百度机器翻译SDK实验(2023.11.29日完成)

任务一:下载配置百度翻译Java相关库及环境(占10%)。

任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)。

任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

任务四:完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

实验总结:(占10%)

 

 

 

 

package Translate;

import okhttp3.*;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;
import java.util.Scanner;

public class test {
    public static final String API_KEY = "MP8dIFzyozC82HXQqcaXeT8v";
    public static final String SECRET_KEY = "6kaFGVdRGbO4Tw1c4B5TacbzGua5CilY";
    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        translate(scanner);
    }

    private static void translate(Scanner scanner) {
        System.out.println("请选择翻译方向(1:中译英,2:英译中,3:退出):");
        int direction = scanner.nextInt();
        String targetLanguage = "中译英";
        if (direction == 1) {
            targetLanguage = "en";
        } else if (direction == 2) {
            targetLanguage = "zh";
        } else if (direction == 3){
            System.exit(0);
        } else {
            System.out.println("无效的选择");
            return;
        }
        System.out.println("请输入要翻译的文本:");
        scanner.nextLine(); // 读取换行符
        String textToTranslate = scanner.nextLine();

        try {
            String translatedText = translateText(textToTranslate, targetLanguage);
            System.out.println("翻译结果:" + translatedText);
        } catch (IOException ex) {
            System.out.println("翻译出错");
        }
        translate(scanner);
    }

    /**
     * 调用百度翻译API进行文本翻译
     *
     * @param textToTranslate 要翻译的文本
     * @param targetLanguage    目标语言代码
     * @return 翻译结果
     * @throws IOException IO异常
     */
    static String translateText(String textToTranslate, String targetLanguage) throws IOException {
        // 构建请求体的 JSON 对象
        JSONObject requestBodyJson = new JSONObject();
        requestBodyJson.put("from", "auto");  // 源语言自动检测
        requestBodyJson.put("to", targetLanguage);  // 目标语言根据用户选择
        requestBodyJson.put("q", textToTranslate);  // 添加要翻译的文本

        // 创建请求体
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, requestBodyJson.toString());

        // 创建HTTP请求
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken())
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Accept", "application/json")
                .build();

        // 发起请求并获取响应
        Response response = HTTP_CLIENT.newCall(request).execute();

        // 解析翻译结果
        String translatedText = parseTranslationResult(response.body().string());
        return translatedText;
    }

    /**
     * 解析翻译结果
     *
     * @param responseBody 响应体字符串
     * @return 翻译结果
     */
    static String parseTranslationResult(String responseBody) {
        JSONObject responseJson = new JSONObject(responseBody);
        JSONArray transResultArray = responseJson.getJSONObject("result").getJSONArray("trans_result");

        // 假设只翻译一段文本,取第一个翻译结果
        if (transResultArray.length() > 0) {
            return transResultArray.getJSONObject(0).getString("dst");
        } else {
            return "未能获取翻译结果";
        }
    }

    /**
     * 从用户的AK,SK生成鉴权签名(Access Token)
     *
     * @return 鉴权签名(Access Token)
     * @throws IOException IO异常
     */
    static String getAccessToken() throws IOException {
        // 创建请求体
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
                + "&client_secret=" + SECRET_KEY);

        // 创建HTTP请求
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/oauth/2.0/token")
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();

        // 发起请求并获取响应,解析JSON获取Access Token
        Response response = HTTP_CLIENT.newCall(request).execute();
        return new JSONObject(response.body().string()).getString("access_token");
    }
}

  

package Translate;
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import okhttp3.*;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;

public class TranslateApp extends Application {
    public static final String API_KEY = "MP8dIFzyozC82HXQqcaXeT8v";
    public static final String SECRET_KEY = "6kaFGVdRGbO4Tw1c4B5TacbzGua5CilY";
    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("中英互译");

        // 创建输入文本框和按钮
        Label inputLabel = new Label("输入文本:");
        TextField inputTextField = new TextField();
        Button translateButton = new Button("翻译");

        // 创建目标语言选择下拉框
        ComboBox<String> languageComboBox = new ComboBox<>();
        languageComboBox.getItems().addAll("英译中", "中译英");
        languageComboBox.setValue("中译英");

        // 创建显示翻译结果的标签
        Label translationLabel = new Label();

        // 设置按钮点击事件
        translateButton.setOnAction(e -> {
            try {
                String textToTranslate = inputTextField.getText();
                String targetLanguage = languageComboBox.getValue();
                String languageCode = "";
                if (targetLanguage.equals("英译中")) {
                    languageCode = "zh";
                } else if (targetLanguage.equals("中译英")) {
                    languageCode = "en";
                }

                String translatedText = translateText(textToTranslate, languageCode);
                translationLabel.setText("翻译结果:" + translatedText);
            } catch (IOException ex) {
                translationLabel.setText("翻译出错");
            }
        });

        // 创建布局并设置组件间的间距和边距
        VBox vbox = new VBox(10);
        vbox.setPadding(new Insets(10, 10, 10, 10));
        vbox.getChildren().addAll(inputLabel,inputTextField, languageComboBox, translateButton, translationLabel);

        // 创建场景并显示窗口
        Scene scene = new Scene(vbox, 500, 300);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * 调用百度翻译API进行文本翻译
     *
     * @param textToTranslate 要翻译的文本
     * @param languageCode  目标语言代码
     * @return 翻译结果
     * @throws IOException IO异常
     */
    static String translateText(String textToTranslate, String languageCode) throws IOException {
        // 构建请求体的 JSON 对象
        JSONObject requestBodyJson = new JSONObject();
        requestBodyJson.put("from", "auto");  // 源语言自动检测
        requestBodyJson.put("to", languageCode);  // 目标语言根据用户选择
        requestBodyJson.put("q", textToTranslate);  // 添加要翻译的文本

        // 创建请求体
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, requestBodyJson.toString());

        // 创建HTTP请求
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + getAccessToken())
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Accept", "application/json")
                .build();

        // 发起请求并获取响应
        Response response = HTTP_CLIENT.newCall(request).execute();

        // 解析翻译结果
        String translatedText = parseTranslationResult(response.body().string());
        return translatedText;
    }

    /**
     * 解析翻译结果
     *
     * @param responseBody 响应体字符串
     * @return 翻译结果
     */
    static String parseTranslationResult(String responseBody) {
        JSONObject responseJson = new JSONObject(responseBody);
        JSONArray transResultArray = responseJson.getJSONObject("result").getJSONArray("trans_result");

        // 假设只翻译一段文本,取第一个翻译结果
        if (transResultArray.length() > 0) {
            return transResultArray.getJSONObject(0).getString("dst");
        } else {
            return "未能获取翻译结果";
        }
    }

    /**
     * 从用户的AK,SK生成鉴权签名(Access Token)
     *
     * @return 鉴权签名(Access Token)
     * @throws IOException IO异常
     */
    static String getAccessToken() throws IOException {
        // 创建请求体
        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
                + "&client_secret=" + SECRET_KEY);

        // 创建HTTP请求
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/oauth/2.0/token")
                .method("POST", body)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();

        // 发起请求并获取响应,解析JSON获取Access Token
        Response response = HTTP_CLIENT.newCall(request).execute();
        return new JSONObject(response.body().string()).getString("access_token");
    }
}

  

 

标签:总结,翻译,return,String,每日,11.29,static,import,new
From: https://www.cnblogs.com/louwangshayu/p/17865877.html

相关文章

  • 11.29闲话
    今天也是为了解LCA,然后学了树链剖分这边写个讲解树剖分为重链剖分和长链剖分通常指的是重链剖分重链剖分对于任意一个位于树上的节点重子节点表示其子节点中子树最大的子结点。如果有多个子树最大的子结点,取其一。如果没有子节点,就无重子节点。轻子节点表示剩余的所有子......
  • 每日总结11.29
    百度机器翻译SDK实验完成百度翻译GUI相关功能代码并测试调用,实现中文翻译成英文,英文翻译成中文。示例代码:packagebaidu.com;importokhttp3.*;importorg.json.JSONObject;importjava.io.*;classSample{publicstaticfinalStringAPI_KEY="";publics......
  • 2023.11.29 日记 Take it easy
    很不想把文化课写到日记里。但今天有点烦了。考试考的内容是要通过刷题得知的,并非学习。我已经在别的平台抱怨过很多次当今教育现状了,无济于事是肯定的,反而会打消学习的积极性。由于训练原因欠了很多课,再加上两个学校的进度不同、考试时间不同,我的学习成果实在像是被虫蛀了一样......
  • 23.11.29(代码大全2读书笔记)
    *第一部分打好基础 第一章欢迎进入软件构建的世界 >软件构建的定义:包括编码与调试、单元测试、规划构建、集成等,没有给出一个明确的定义。>软件构建的重要性:软件构建是编写大型项目最重要的、不可或缺的部分。 第二章用隐喻来更充分地理解软件开发 > 对软件开......
  • 2023-2024-1 学期20232423《网络空间安全导论》第四周学习总结
    教材学习——系统安全基础系统安全的两层含义:①以系统思维应对安全问题;②应对系统所面临的安全问题4.1系统安全概述时代在不断发展,系统安全也在不断演变:从二十世纪四十年代的第一台计算机,五十年代的第一个操作系统,六十年代的第一个分时系统CTSS、第一个安全操作系统Adept-50......
  • 每日总结
    今天上了软件构造课程。百度机器翻译SDK实验 packagetranslate;importokhttp3.*;importorg.json.JSONArray;importorg.json.JSONObject;importjava.io.*;classSample{publicstaticfinalStringAPI_KEY="0r";publicstaticfinalStringSECRET......
  • 2023-2024-1 20232404 《网络空间安全导论》第4周学习总结
    教材学习内容总结4.1系统安全概述世界上第一台通用电子计算机ENIAC,是纯粹的硬件裸机。世界上第一个安全系统Adept-50,属于分时系统。自外观察法是通过观察系统输入输出来分析系统的行为。一个系统是一个统一的整体,系统中的元素紧密关联。自内观察者属于系统的某个部分。......
  • 赛后总结
    赛后总结CFRound908(div2)A.SecretSport本题读懂题以后,是秒杀的,但鉴于本人语文实在不好,还是花费了20多分钟。本题询问全局获胜的人是A还是B,但实际上最后一局的获胜者就是赢家,所以只需输出最后一个胜利的人即可。下面就是本题简单的代码:#include<bits/stdc++.h>usin......
  • 11.29-task5-代码风格
    代码风格代码风格介绍修饰代码的前提是代码没有bug。。。两幅图中的代码对比,显然后一幅图的代码更加简洁,易懂。也方便之后很长时间后的再理解。缩进tab==4个空格当函数有多参数时换行当一个语句的字符数过长,要换行运算符对齐导入规范导入时要遵循同级文......
  • 每日总结20231129
    代码时间(包括上课)5h代码量(行):100行博客数量(篇):1篇相关事项:1、今天是周三,今天只有一节课,就是软件构造,这节课是实验课,这周是第十三周了,马上也迎来了这学期的末尾,大作业的题目也发布了。2、今天下午洗了洗澡,刷了刷抖音,然后把衣服洗了,又发了篇博客。3、今天晚上打算把大数据的最后......