Java 对传递给方法&;的字符串进行编码;加13
(编辑) 我的问题陈述:编写一个方法,通过向字符串中的每个字符添加13个字母,对传递给该方法的字符串进行编码。如果加13后的字母超过“z”,则“环绕”字母表。然后返回编码的字符串Java 对传递给方法&;的字符串进行编码;加13,java,string,loops,encode,rot13,Java,String,Loops,Encode,Rot13,(编辑) 我的问题陈述:编写一个方法,通过向字符串中的每个字符添加13个字母,对传递给该方法的字符串进行编码。如果加13后的字母超过“z”,则“环绕”字母表。然后返回编码的字符串 encodeString("hello") → "uryyb" encodeString("pie") → "cvr" encodeString("book") → "obbx" 这就是我到目前为止所做的: public static String encodeString (String input) {
encodeString("hello") → "uryyb"
encodeString("pie") → "cvr"
encodeString("book") → "obbx"
这就是我到目前为止所做的:
public static String encodeString (String input) {
String output;
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c >= 'a' && c <= 'm')
c += 13;
else if (c >= 'n' && c <= 'z')
c -= 13;
output= (" " + (c));
}
return output;
}
公共静态字符串编码字符串(字符串输入){
字符串输出;
对于(int i=0;i 如果(c>='a'&&c='n'&&c您必须将输出
变量初始化为空字符串。此外,您总是用刚刚编码的最后一个字符替换输出
变量的内容。因此,您必须使用+=/code>而不是=/code>将每个字符添加到输出
下面是固定的解决方案:
public static String encodeString(String input) {
String output = ""; // initialize as empty String
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c >= 'a' && c <= 'm') {
c += 13;
} else if (c >= 'n' && c <= 'z') {
c -= 13;
}
output += " " + c; // add all chars to the String instead of replacing the whole String with "="!
}
return output;
}
公共静态字符串编码字符串(字符串输入){
字符串输出=”“;//初始化为空字符串
对于(int i=0;i 如果(c>='a'&&c='n'&&c这段代码的性能不是最好的,但是可以很好地处理大写和小写字符
你好→ uRyYb
馅饼→ cVr
书→ oBbX
私有静态字符串编码字符串(字符串){
char[]ret=new char[string.length()];
对于(int i=0;i=0
&&Character.compare(Character.toLowerCase(c),'m')First..必须将charAt()放入while循环okie dokie?。否则它将只读取第一个字符..谷歌“ROT13”然后复制一个解决方案。第二,必须返回的循环没有意义。如果不想返回,就要构造结果字符串。@Ingo我该怎么做?第三,你有2{,但4},这不起作用。
private static String encodeString(String string) {
char[] ret = new char[string.length()];
for (int i = 0; i < string.length(); i++) {
ret[i] = rot13(string.charAt(i));
}
return String.valueOf(ret);
}
public static char rot13(char c) {
if (Character.isLetter(c)) {
if (Character.compare(Character.toLowerCase(c), 'a') >= 0
&& Character.compare(Character.toLowerCase(c), 'm') <= 0)
return c += 13;
else
return c -= 13;
}
return c;
}