我的代码看起来正确,我没有看到它有什么问题,但程序输出不正确(代码后的特殊性):
两个课程:Test.java
和Key.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
)。
答案 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)) {