不会加密设置的字符?

时间:2013-11-27 16:03:31

标签: java

我的代码看起来正确,我没有看到它有什么问题,但程序输出不正确(代码后的特殊性):

两个课程:Test.javaKey.java

Test.java:

public class Test{
  public static void main(String[] args) {
    Key k1,k2;
    k1 = new Key(5);
    k2 = new Key(15);

    System.out.println(k1.encode('a')); // expected output 'f'
    System.out.println(k2.encode('a')); // expected output 'p'
    System.out.println(k1.encode('7')); // expected output '2'
}

Key.java:

class Key{
  private int value;

  Key(int value) {}

  public char encode(char c){
    if (isValidKey(value) != true) {
      return '.';             
    } else {
      int code = (int) c;
      code = code + value;
      c = (char) code;
      return c;
    }
}

当我为输入a, a and 2运行测试时,它只返回... a a and 2(而不是预期的f p and 2)。

3 个答案:

答案 0 :(得分:1)

值始终为0.修复构造函数。此

Key(int value) {
}

应该是这个

Key(int value) {
  // Store the value in private this.value.
  this.value = value;
}

答案 1 :(得分:0)

您的构造函数实际上需要保存给定值:

Key(int value) {
    this.value = value;
}

您现在为每个字符添加零,这意味着您确实会将'a'作为'a'的输出作为输入。

答案 2 :(得分:0)

在Key类的构造函数中,您可能需要设置变量value的值。这样可以改变变量value的值。试试这个并继续看看是否还有其他问题。

来自

Key(int value) {

}

Key(int value) {

    this.value = value;
}

此外,它不是问题,您可以简单地使用以下代码

来自

 if (isValidKey(value) != true) {

  if (!isValidKey(value)) {