我的程序应该打印出一个字符串,而是在用户输入消息中为每个小写字母输出100,每个大写字母输出68。
对于帮助我的计划工作或使我的计划更好的代码,可以说任何积极和有建设性的事情都将受到高度赞赏。
我认为我的错误是在我的主要或calcOffset中。
感谢。
import java.util.Scanner;
class CeaserCipher{
char[] Alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
public static void main(String[] args){
String in;
int off;
Scanner sc = new Scanner (System.in);
System.out.println("Message: ");
in = sc.nextLine();
System.out.println("Offset: ");
off = sc.nextInt();
String out = new CeaserCipher().ceaser(in, off);
System.out.println(out);
}
public String ceaser(String in, int off){
char[] useMe = in.toCharArray();
String output = " ";
for(int j=0; j!=useMe.length; j++){
if(Character.isUpperCase(useMe[j]))
output += Character.toUpperCase(calcOffset(getIndex(useMe[j]), off));
else
output += calcOffset(getIndex(useMe[j]), off);
}
return output;
}
public int getIndex(char letter){
if (Character.isUpperCase(letter)){
letter = Character.toLowerCase(letter);
}
for (int i = 0; i != Alphabet.length; i++){
return i;
}
return 999;
}
public int calcOffset(int index, int off){
if((index + off) < 0){
int newIndex = 26 + (index+off);
return Alphabet[newIndex];
}
if((index + off) > 25){
int newIndex = (index+off) - 26;
return Alphabet[newIndex];
}
if((index + off) >= 0 && (index + off) < 25){
int newIndex = (index + off);
return Alphabet[newIndex];
}
return 'X';
}
}
答案 0 :(得分:0)
getIndex方法中的代码导致问题 -
for (int i = 0; i < Alphabet.length; i++){
return i;
}
对我来说,似乎你总是返回0,因此你的calcOffset也返回相同的值。纠正它你应该得到正确的结果。 希望有所帮助。