程序只在特定的电脑上运行
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;
}
}
我必须编写一个程序来创建信用卡号。我写了 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;
}
}