程序仅在特定的PC上运行

时间:2015-03-02 23:38:06

标签: java class compilation acm

我必须编写一个创建信用卡号码的程序。我写了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,我在记事本++上写了

2 个答案:

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