我正在尝试在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;
答案 0 :(得分:4)
String
是不可变的。 String.replace
不会改变原始字符串,而是返回一个新的String
,并替换掉字符。
所以,而不是:
s.replace(x,c);
你应该:
s = s.replace(x,c);
答案 1 :(得分:0)
我希望看到一些代码:Key
类中的变量声明。来自Dragondraikk的评论可能是你需要的线索。我敢打赌,你有一个名为value
类int
的班级变量,对吗?因此,您需要在Key
构造函数中使用以下内容:
this.value = value;
我怀疑你的encode()
方法目前只返回点。如果是这样,那应该解决它。