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;
}
}
答案 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 = "";
如果你没有放= ""
那么你从来没有初始化它(它本质上是随机垃圾,所以编译器不允许你这样做。)