程序只在特定的电脑上运行

Program runs only at a specific pc

我必须编写一个程序来创建信用卡号。我写了 3 classes,主要的 class,从那里我可以得到卡的类型和长度(例如 Visa 15 位数字),luhn 公式和一个 class 其中我创建卡。从主要 class 我将卡片的类型和长度发送到最后 class。所以我开始了最后一个 class 像这样(它不是所有的代码,只有第一行):

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;
}

这显然是错误的(编译错误)但问题是只有我的电脑(我也写了这些 classes)可以 运行 它,没有编译错误并得到正确的结果。我知道问题出在哪里,其他 2 个 class 是正确的,但我想知道如何 运行 在我的电脑上没有问题。

Ps: 我用的是 acm 包,我的 jdk 是 1.8.0_31 我在记事本++上写的

我的JDK和class版本一样,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

在我的编译器中它给出 "Cannot reference a field before it is defined"。

您可以将它们定义为:

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;
    }
}