【问题标题】:Java breaks string into rubbish at encoding/decoding [duplicate]Java在编码/解码时将字符串分解为垃圾[重复]
【发布时间】:2017-11-09 23:52:18
【问题描述】:

您好,我在 java 中有一个简单的编码/解码方法(在 eclipse 中运行),它返回编码或解码的字符串,由参数 key 选择(如果 key

该方法在 void main 中执行,如下代码所示。

public static void main(String[] args)
{
    System.out.println(rotate("programm", 42));
}

我的编码/解码方法如下:

public static String rotate(String text, int key)
{
    // Check if given key is in range -25 to 25
    if (key < -42 || key > 42)
        return "";

    if (key == 0)
        return text;

    char[] array = text.toCharArray();
    int k = key % 26;

    // Check if every char of given text is in rang from 'a' to 'z'
    // Use text as char array to manipulate each char
    for (int i = 0; i < array.length; ++i) {
        if (array[i] < 'a' || array[i] > 'z') {
            return "";
        }
        else {
            if (key < 0) {
                int j = (int)array[i] - k;
                if (j < 'a')
                    array[i] = (char)(j+26);
                else
                    array[i] -= k;
            }
            else {
                int j = (int)array[i] + k;
                if (j > 'z')
                    array[i] = (char)(j-26);
                else
                    array[i] += k;
            }
        }
    }       
    return array.toString();
}

问题是 rotate(..) 的结果数组等于“fhewhqcc”,这是正确的,但控制台打印“[C@123a439b”。

你有什么想法吗?

【问题讨论】:

  • 您返回的是一个字符数组而不是字符串。因此打印输出是这样的。
  • new String(array)替换array.toString()
  • 谢谢大家,我是c++岸的,不习惯java。

标签: java string decode encode destroy


【解决方案1】:

您返回的是一个字符数组而不是字符串。因此打印输出是这样的。您需要将return语句更改如下:

return new String(array);

【讨论】:

    最近更新 更多