定义一个名为 encode 的方法,它接受一个字符串作为输入和 returns 一个新字符串,它是使用 ROT13 密码编码的原始字符串
Define a method named encode that accepts a String as input and returns a new String which is the original String encoded using the ROT13 cipher
例如:字符串 "abc" 应该 return "nop".
我做了一个 System.out.println 并打印了正确的结果,但是,JUnit 测试用例给我一个红色条。方法 move13 只是获取字符并将其向左或向右移动 13 个空格。
编码方法是我遇到问题的地方。
package code;
public class Encoder {
public char move13(char letter) {
if (letter >= 'a' && letter <= 'm') {
return (char)(letter + 13);
}
if (letter >= 'A' && letter <= 'M') {
return (char)(letter + 13);
}
if (letter >= 'n' && letter <= 'z') {
return (char)(letter - 13);
}
if (letter >= 'N' && letter <= 'Z') {
return (char)(letter - 13);
}
return letter;
}
public String encode(String text) {
String valueOfchar = "";
for (int i = 0; i < text.length(); i++) {
char character = text.charAt(i);
character = move13(character);
valueOfchar = String.valueOf(character);
System.out.println(valueOfchar);
}
return valueOfchar;
}
}
我们没有看到单元测试代码,但据推测,您的方法 encode()
只会 return 一个字符,而不是整个字符串。
public String encode(String text) {
String valueOfchar = "";
for (int i = 0; i < text.length(); i++) {
....
valueOfchar = String.valueOf(character); // A single char
....
}
return valueOfchar;
尝试:
valueOfchar = valueOfchar.concat(String.valueOf(character));
给你,希望对你有帮助
public static char move13(char letter) {
if (letter >= 'a' && letter <= 'm')
return (char) (letter + 13);
if (letter >= 'A' && letter <= 'M')
return (char) (letter + 13);
if (letter >= 'n' && letter <= 'z')
return (char) (letter - 13);
if (letter >= 'N' && letter <= 'Z')
return (char) (letter - 13);
return letter;
}
public static String encode(String text) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char character = text.charAt(i);
character = move13(character);
sb.append(character);
//System.out.println(valueOfchar);
}
return sb.toString();
}
char 在 StringBuilder 中串联 (sb.append(char))
。在 move13()
中处理每个字母后,您 return 连接的字符 (sb.toString()
)。
例如:字符串 "abc" 应该 return "nop".
我做了一个 System.out.println 并打印了正确的结果,但是,JUnit 测试用例给我一个红色条。方法 move13 只是获取字符并将其向左或向右移动 13 个空格。
编码方法是我遇到问题的地方。
package code;
public class Encoder {
public char move13(char letter) {
if (letter >= 'a' && letter <= 'm') {
return (char)(letter + 13);
}
if (letter >= 'A' && letter <= 'M') {
return (char)(letter + 13);
}
if (letter >= 'n' && letter <= 'z') {
return (char)(letter - 13);
}
if (letter >= 'N' && letter <= 'Z') {
return (char)(letter - 13);
}
return letter;
}
public String encode(String text) {
String valueOfchar = "";
for (int i = 0; i < text.length(); i++) {
char character = text.charAt(i);
character = move13(character);
valueOfchar = String.valueOf(character);
System.out.println(valueOfchar);
}
return valueOfchar;
}
}
我们没有看到单元测试代码,但据推测,您的方法 encode()
只会 return 一个字符,而不是整个字符串。
public String encode(String text) {
String valueOfchar = "";
for (int i = 0; i < text.length(); i++) {
....
valueOfchar = String.valueOf(character); // A single char
....
}
return valueOfchar;
尝试:
valueOfchar = valueOfchar.concat(String.valueOf(character));
给你,希望对你有帮助
public static char move13(char letter) {
if (letter >= 'a' && letter <= 'm')
return (char) (letter + 13);
if (letter >= 'A' && letter <= 'M')
return (char) (letter + 13);
if (letter >= 'n' && letter <= 'z')
return (char) (letter - 13);
if (letter >= 'N' && letter <= 'Z')
return (char) (letter - 13);
return letter;
}
public static String encode(String text) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
char character = text.charAt(i);
character = move13(character);
sb.append(character);
//System.out.println(valueOfchar);
}
return sb.toString();
}
char 在 StringBuilder 中串联 (sb.append(char))
。在 move13()
中处理每个字母后,您 return 连接的字符 (sb.toString()
)。