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

如何将Java字符串转为点形式?及点形式密码还原程序设计咨询

Java字符串转星号形式 + 密码输入原内容展示方案

嘿,我来帮你搞定这两个问题~ 先解决把普通字符串转成星号(也就是你说的“点形式”),再写一个实用的密码输入程序,让输入时显示星号,最后输出真实内容。


一、把字符串转换成星号形式

如果是要把任意字符串变成对应长度的星号串(比如"12345"转成"*****"),有几种简单的实现方式:

方法1:循环拼接(兼容所有Java版本)

public static String strToStars(String original) {
    // 先判断空值,避免空指针异常
    if (original == null || original.isEmpty()) {
        return "";
    }
    StringBuilder starBuilder = new StringBuilder();
    for (int i = 0; i < original.length(); i++) {
        starBuilder.append('*');
    }
    return starBuilder.toString();
}

方法2:Java 11+ 极简写法

用String.repeat()方法一行搞定,代码更简洁:

public static String strToStars(String original) {
    return original == null ? "" : "*".repeat(original.length());
}

测试效果:

public static void main(String[] args) {
    String testStr = "12345";
    System.out.println(strToStars(testStr)); // 输出:*****
}

二、实现密码输入时显示星号,输出原内容

普通的Scanner输入会直接显示你敲的字符,所以我们要用Java的Console类来实现“输入时显示星号,后台获取真实内容”的效果,这也是实际项目中处理密码输入的常用方式。

完整程序示例

import java.io.Console;
import java.util.Arrays;

public class PasswordInputDemo {
    public static void main(String[] args) {
        // 获取控制台对象,注意:IDE的运行窗口可能不支持,建议在命令行运行
        Console console = System.console();
        if (console == null) {
            System.out.println("⚠️ 无法获取控制台,请在命令行环境运行此程序(IDE的Run窗口可能不支持)");
            System.exit(1);
        }

        // 提示用户输入,输入时会自动显示星号
        char[] passwordChars = console.readPassword("请输入密码:");
        // 把字符数组转成字符串(字符数组比字符串更安全,用完可以清空)
        String originalPassword = new String(passwordChars);

        // 输出真实内容
        System.out.println("您输入的原密码是:" + originalPassword);

        // 安全起见,用完后清空字符数组,避免密码留在内存中
        Arrays.fill(passwordChars, ' ');
    }
}

运行说明

  1. 如果你用IDE运行可能会报错(因为IDE的控制台不是系统原生控制台),建议用命令行操作:
    • 编译:javac PasswordInputDemo.java
    • 运行:java PasswordInputDemo
  2. 输入密码时,屏幕会显示星号,程序拿到的却是你实际输入的内容,最后会输出真实密码。

补充:如果是“输入星号串映射原内容”

如果你的需求是输入星号字符串,比如*****,程序输出对应的原内容12345,那需要提前建立映射关系,比如用Map存储,但这种场景实用性不高(相同长度的星号会对应同一个内容),示例代码如下:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class StarToOriginal {
    public static void main(String[] args) {
        // 提前定义星号串和原内容的映射
        Map<String, String> starMap = new HashMap<>();
        starMap.put("*****", "12345");
        starMap.put("******", "abc123");

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入星号形式的密码:");
        String inputStar = scanner.nextLine().trim();

        String original = starMap.get(inputStar);
        if (original != null) {
            System.out.println("对应的原内容是:" + original);
        } else {
            System.out.println("没有找到匹配的原内容");
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:57:09