替换密码 - 编码

时间:2013-11-27 15:41:05

标签: java

我正在尝试在java中创建一个程序,它将用不同的字符替换(编码/解码)给定输入(字符串)的字符。到目前为止,我已经为编码部分编写了一些代码,但它似乎不起作用,我不确定为什么。

这是Key类的编码部分,请考虑isValidKey的工作原理。

public Key (int value){
}

public char encode(char c){

if (isValidKey(value) == true){
    int x = (int)c + value;
    c = (char)x;


    return c;
    }else{
    return '.'; 
    }
}

这是Cryptic类的加密部分。

public static java.lang.String encrypt(java.lang.String s, Key k){
for (int i =0; i<s.length(); i++) {
        char x = s.charAt(i);
        char c = k.encode(x);
           s = s.replace(x,c);

}
return s;   

}

这一切都是编译但是当我测试它时,它根本不做任何事情,对给定的输入(字符串)。

我想要实现的是,当他们将Key的值设置为例如5时,'a'的输入将变为'f'。

这是isValidKey方法

public static boolean isValidKey(int value){
if (value >= 0 && value <= 25)
return true;    
else
return false;
}

Key类中的可变减速

public class Key { 
private int value;
private int c;

2 个答案:

答案 0 :(得分:4)

Java中的

String是不可变的。 String.replace 会改变原始字符串,而是返回一个新的String,并替换掉字符。

所以,而不是:

s.replace(x,c);

你应该:

s = s.replace(x,c);

答案 1 :(得分:0)

我希望看到一些代码:Key类中的变量声明。来自Dragondraikk的评论可能是你需要的线索。我敢打赌,你有一个名为valueint的班级变量,对吗?因此,您需要在Key构造函数中使用以下内容:

this.value = value;

我怀疑你的encode()方法目前只返回点。如果是这样,那应该解决它。