Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对传递给方法&;的字符串进行编码;加13_Java_String_Loops_Encode_Rot13 - Fatal编程技术网

Java 对传递给方法&;的字符串进行编码;加13

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) {

(编辑)

我的问题陈述:编写一个方法,通过向字符串中的每个字符添加13个字母,对传递给该方法的字符串进行编码。如果加13后的字母超过“z”,则“环绕”字母表。然后返回编码的字符串

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;
}