You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java入门求助:如何在Main类中整合文本扫描与十六进制加密类

解决Java文本转十六进制加密器的整合问题

嘿,作为Java入门新手,你已经把模块拆分得很清楚啦!现在咱们来把这三个类好好整合起来,顺便修复几个小细节,让你的加密器正常工作~

先说说原代码里的小坑

  • textScanner里的scanA.next()只能读取空格前的内容,输入goodmorning stackoverflow的话只能拿到goodmorning,得换成scanA.nextLine()才能读取整行输入。
  • encryptor里的toHexadecimal方法不该直接调用textScanner.scanner(),咱们要让每个类的职责更清晰:scanner负责拿输入,encryptor负责转换,Main负责统筹调用。
  • 原DatatypeConverter.printHexBinary()返回的是连续的十六进制字符串(比如676F6F64),咱们得把它拆成每个字节带空格的格式,才能匹配你要的输出。

修改后的完整代码

1. textScanner.java

import java.util.Scanner;

public class textScanner {
    // 只负责读取控制台输入,职责单一
    public static String getInputText() {
        Scanner scanA = new Scanner(System.in);
        System.out.println("Please enter the text to be encrypted");
        String plainText = scanA.nextLine(); // 换成nextLine读取整行内容
        scanA.close();
        return plainText;
    }
}

2. encryptor.java

import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;

public class encryptor {
    // 专注于文本转十六进制的逻辑,接收字符串返回格式化后的结果
    public static String toHexadecimal(String text) throws UnsupportedEncodingException {
        byte[] myBytes = text.getBytes("UTF-8");
        // 先转成连续的十六进制字符串
        String hexStr = DatatypeConverter.printHexBinary(myBytes);
        // 拆分为每两位一组,加空格分隔并转小写(匹配你的输出示例)
        return hexStr.replaceAll("(.{2})", "$1 ").trim().toLowerCase();
    }
}

3. Main.java

import java.io.UnsupportedEncodingException;

public class Main {
    public static void main(String[] args) {
        try {
            // 第一步:获取用户输入
            String inputText = textScanner.getInputText();
            // 第二步:调用加密器转换文本
            String encryptedHex = encryptor.toHexadecimal(inputText);
            // 第三步:输出最终结果
            System.out.println(encryptedHex);
        } catch (UnsupportedEncodingException e) {
            // 捕获编码异常,给友好提示
            System.out.println("编码错误:" + e.getMessage());
        }
    }
}

运行效果

输入:goodmorning stackoverflow
输出:67 6f 6f 64 6d 6f 72 6e 69 6e 67 20 73 74 61 63 6b 6f 76 65 72 66 6c 6f 77

整合逻辑说明

  1. Main类作为程序入口,先调用textScanner.getInputText()拿到用户输入的完整文本。
  2. 把输入文本传给encryptor.toHexadecimal(),让它完成字节转换、十六进制格式化的工作。
  3. 最后输出处理后的结果,同时用try-catch捕获可能的编码异常,让程序更健壮。

内容的提问来源于stack exchange,提问作者evan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:47:24