我必须编写一个创建信用卡号码的程序。我写了3个班级,主要班级,从中我可以得到卡片的类型和长度(例如签证15位数),luhn公式和我创建卡片的一个班级。从主类我发送卡的类型和长度到最后一个类。所以我开始了这样的最后一个类(它不是所有的代码,只有第一行):
public class Cards extends Program {
private int[] x = new int[length];
private int[] k = new int[length];
private int length;
private String type;
public Cards(int l, String name) {
length = l;
type = name;
}
这显然是错误的(编译时出错)但事情是只有我的电脑(我也写过这些类)可以运行它,没有编译错误并获得正确的结果。我知道问题在哪里,其他2个类是正确的,但我想知道如何在没有问题的情况下在我的电脑上运行。
Ps:我用了acm包,我的jdk是1.8.0_31,我在记事本++上写了
答案 0 :(得分:0)
我有相同版本的JDK,而类Card
无法编译。您可能正在执行以前编译的 .class 。你确定你的代码永远不会像:
public class Cards extends Program {
private int[] x;
private int[] k;
private int length;
private String type;
public Cards(int l, String name) {
length = l;
x = new int[length] ;
k = new int[length] ;
type = name;
}
}
我敢打赌!删除PC中的任何文件Cards.class
后再试一次。
答案 1 :(得分:0)
在我的编译器中,它给出了“在定义之前无法引用字段”。
您可以将它们定义为:
private int length;
private int[] x = new int[length];
private int[] k = new int[length];
但是,该代码不明确,因为在构造函数中分配了length
。
也许最清楚的是写:
public class Cards extends Program {
private int[] x;
private int[] k;
private int length;
private String type;
public Cards(int l, String name) {
this.length = l;
this.x = new int[length];
this.y = new int[length];
this.type = name;
}
}