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

Java使用Arrays.toString()转换字符数组出现奇怪字符序列如何解决

Java字符数组拼接为连续字符串的实现方案

你使用Arrays.toString()得到带方括号、分隔符的结果是正常的,该方法的设计目的是生成供调试查看的格式化数组字符串,而非拼接数组内容。针对你的需求有以下几种简便实现:

1 最优方案(适配你当前的char数组场景)

Java的String类原生支持char数组直接构造,性能最高、代码最简,直接替换你原有Arrays.toString(passHold)那行即可:

passFinal = new String(passHold);

2 通用数组拼接方案(适用于非char类型数组)

如果后续你需要拼接其他类型的数组(比如String数组、Integer数组),可以使用String.join方法,第一个参数传入空字符串作为分隔符即可:

// 示例:String数组拼接为连续字符串
String[] arr = {"0", "2", "f", "B", "d", "7", "A"};
String result = String.join("", arr);

3 流式处理方案(Java 8+,适用于需要中间转换的场景)

如果数组元素需要先做类型转换再拼接,可以用Stream API实现:

import java.util.Arrays;
import java.util.stream.Collectors;

// 示例:混合类型数组拼接为连续字符串
Object[] arr = {0, 2, 'f', 'B', 'd', 7, 'A'};
String result = Arrays.stream(arr)
                .map(String::valueOf)
                .collect(Collectors.joining(""));

修改后的完整代码

import java.util.Scanner;

public class passwordGen {

    public static char Number(char[] array) {
        byte random = (byte)(Math.random() * 10);
        return array[random];
    }

    public static char Char(char[] array) {
        byte random = (byte)(Math.random() * 26);
        return array[random];
    }

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

        final char[] numbers = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        final char[] alphabet = { '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'
        };

        float selector;

        int length = scanner.nextInt();

        char[] passHold = new char[length];
        String passFinal;

        try {
            for (int i = 0; i < length; i++) {
                selector = (float)Math.random();
                if (selector < 0.5) {
                    passHold[i] = Number(numbers);
                } else {
                    passHold[i] = Char(alphabet);
                }
            }

            // 仅修改这一行即可
            passFinal = new String(passHold);
            System.out.println(passFinal);
        } catch (Exception e) {
            System.out.println("An error occurred.");
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:36:02