【发布时间】:2013-12-20 11:09:50
【问题描述】:
Captain Crunch 解码器环的工作原理是将字符串中的每个字母加上 13。例如,“a”变成“n”,“b”变成“o”。字母在末尾“环绕”,因此“z”变为“m”。
这是我从 peoples cmets 编辑后得到的,但现在它一直告诉我输出可能尚未初始化,我不知道为什么......还有什么我需要修复的在我的程序中?
在这种情况下,我只关心小写字符的编码
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;
}
}
【问题讨论】:
-
您正在尝试实现一种名为“rot13”的算法。您可以在这里找到一个基本示例:introcs.cs.princeton.edu/java/31datatype/Rot13.java.html 只需将 System.print 调用替换为您的字符串(或更好的 stringBuilder)就可以了。
-
您希望用大写字母与小写字母发生什么变化?尽管您可以通过这种方式转换
chars(并且可能适用于这样的作业),但除了空格中的字母之外,还有其他东西 - 数字、标点符号、一些重音字符、“空白”(制表符、空格等)。所以,你需要弄清楚你的有效范围的开始和结束是什么。您可能需要模运算符 (%)。您还必须点击字符串中的每个字符,因此您需要某种循环...