gpt4 book ai didi

Java在编码/解码时将字符串分解为垃圾

转载 作者:行者123 更新时间:2023-12-02 12:01:33 24 4
gpt4 key购买 nike

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

该方法在 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”。

你有什么想法吗?

最佳答案

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

return new String(array);

关于Java在编码/解码时将字符串分解为垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com