Crunch队长 - ROT13编码器程序

时间:2013-12-20 11:09:50

标签: java string encode

Captain Crunch解码器环的工作原理是将每个字母写成一个字符串并添加13。例如,'a'变为'n','b'变为'o'。字母在末尾“环绕”,所以'z'变成'm'。

这是我从人们的评论中稍微编辑后得到的,但现在它一直告诉我输出可能还没有被初始化,我也不知道为什么...还有其他我需要解决的问题在我的程序?

在这种情况下,我只关心编码小写字符

import java.util.Scanner;

public class captainCrunch {
 public static void main (String[] Args) {

 Scanner sc= new Scanner(System.in);
 String input;

 System.out.print("getting input");
 System.out.println("please enter word: ");
 input= sc.next();

 System.out.print(" ");
 System.out.print("posting output");
 System.out.print("encoding" + input + " results in: " + encode(input));
 }//end of main


 public static String encode(String input){

 System.out.print(input.length());
 int length= input.length();
 int index;
 String output;
 char c;
 String temp= " ";

        for (index = 0; index < length; index++) {

            c = input.charAt(index);
            if       (c >= 'a' && c <= 'm') c += 13;
            else if     (c >= 'n' && c <= 'z') c -= 13;
            output= temp + (char)(c);
        }
        return output;
    }

}

3 个答案:

答案 0 :(得分:1)

它被称为ROT13编码。

http://en.wikipedia.org/wiki/ROT13

要修复您的算法,您只需要:

public static String encodeString (String input) {
    StringBuilder output = new StringBuilder();

    for (int i=0;i<input.length;i++) {
        char c = input.charAt(i)
        output.append(c+13); // Note you will need your code to wrap the value around here
    }

    return output.toString();
}

我没有实现“包装”,因为它取决于你需要支持的情况(上部或下部)等。基本上你需要做的只是查看c的范围然后加或减13取决于它在ASCII字符集中的位置。

答案 1 :(得分:0)

您没有任何循环迭代字符串的字符。您必须将其他字符串从0迭代到string.length()

答案 2 :(得分:0)

输出可能尚未初始化:

String output = "";

如果你没有放= ""那么你从来没有初始化它(它本质上是随机垃圾,所以编译器不允许你这样做。)