Java在编码/解码时将字符串分解为垃圾
您好,我有一个在eclipse中运行的java中的简单编码/解码方法,它返回编码的字符串,如果key<0,则由参数key选择,然后执行decoding else编码 该方法在void main中执行,如下代码所示Java在编码/解码时将字符串分解为垃圾,java,string,decode,encode,destroy,Java,String,Decode,Encode,Destroy,您好,我有一个在eclipse中运行的java中的简单编码/解码方法,它返回编码的字符串,如果key
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();
}
问题是旋转的结果数组。。等于fhewhqcc,这是正确的,但控制台打印[C@123a439b.
您知道吗?您返回的是字符数组而不是字符串。因此打印的输出是这样的。您需要按如下方式更改return语句:
return new String(array);
你返回的是一个字符数组而不是字符串。因此打印输出是这样的。用新的Stringarray替换ARAY.ToString。谢谢各位,我来自C++ Strand,我不习惯java。