字符串Java字母替换无效
我正在读一本关于密码学的书,我想写一个小程序来编码和解码一条信息是一个很酷的主意
我从一个简单的替换密码开始,它可以用一个不同的字母替换一个字母,移动一定数量。例如:a->;c、 b->;d、 等等,只是移动了2
我的代码似乎没有正确地替换字母。它总是输出与我输入的内容相同的内容,即使设置了键。这是我的密码:
public class Keyshift {
public static int Key = 0;
public static void selectKey(){
Scanner in = new Scanner(System.in);
System.out.println("Enter an integer");
int a = in.nextInt();
Key = Key + a;
}
public static void encode(){
String input = "";
Scanner in = new Scanner(System.in);
System.out.println("Enter a string");
input = in.nextLine();
String[] inputLetters = input.split("");
String[] output = new String[inputLetters.length];
String dictLowercase = new String("abcdefghijklmnopqrstuvwxyz");
String dictUppercase = new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
String[] dictLowerArray = dictLowercase.split("");
String[] dictUpperArray = dictUppercase.split("");
for(int i=0;i<inputLetters.length;i++){
for(int c=0;c<25;c++){
if (inputLetters[i]==dictLowerArray[c]){
output[i] = dictLowerArray[((c+Key) % 26)];
}
else if (inputLetters[i]==dictUpperArray[c]){
output[i] = dictUpperArray[((c+Key) % 26)];
}
else {
output[i] = inputLetters[i];
}
}
}
System.out.println("Your encoded message is: ");
System.out.println(Arrays.toString(output));
//System.out.println(Key);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
selectKey();
encode();
}
}
# 1 楼答案
首先,试着将
String
与equals
和==
进行比较。 此外,您没有指定任何break
点,以防您发现某些内容已被修改。比如说,inputLetters
的第一个字符与dictLowerArray
的第一个字母匹配,现在迭代再次进入第二个循环,这一次只执行最后一个else
块,并将与inputLetters
中相同的值复制到output
数组中试试这个循环:
# 2 楼答案
char
操作而不是String
李>.toCharArray()
代替split
character+Key % 26
李>