我在网上搜索,但没有找到答案。这是我的问题。
这里的目标是仅在第一个构造函数中使用我的验证(如果codeForme 9)等,因为其他两个构造函数正在调用第一个构造函数。
但是,当我在第二个构造函数中输入例如codeforme = 20时,它不会像运行第一个构造函数后那样进行修改。我知道问题可能出在this.codeForme = forme,因为它使用了我参数的forme而不是第一个参数的codeForme。
应该有一个简单的方法,谢谢!
到目前为止,这是我的代码:
public class carteMere {
// variable(s) de classe s'il y a lieu
private static int identifiant = 0;
// variable(s) d'instance s'il y a lieu
private String marque;
private int codeForme = 0;
private int capaciteMaxMemoire = 8;
private int memoireInstalle = 0;
private int codeCarte;
// constructeur(s) s'il y a lieu
public carteMere( String marque,
int codeForme,
int capaciteMaxMemoire,
int memoireInstalle) {
this.marque = marque;
this.identifiant = identifiant+1;
this.codeCarte=this.identifiant;
if(codeForme < 0 || codeForme > 9){
codeForme = 0;
}
if(capaciteMaxMemoire<=0){
capaciteMaxMemoire = 8;
}
if(memoireInstalle < 0){
memoireInstalle = 0;
}else if (memoireInstalle> capaciteMaxMemoire){
memoireInstalle = capaciteMaxMemoire;
}
codeForme = codeForme;
capaciteMaxMemoire = capaciteMaxMemoire;
memoireInstalle = memoireInstalle;
}
public carteMere(int forme, int capaciteMax, int memoireInstalle){
this("ASUS", forme, capaciteMax, memoireInstalle);
this.codeForme = forme;
this.capaciteMaxMemoire = capaciteMax;
this.memoireInstalle = memoireInstalle;
this.codeCarte=this.identifiant;
}
public carteMere(int codeForme, int memoireInstalle){
this(codeForme, 8, memoireInstalle);
this.codeForme=codeForme;
this.memoireInstalle=memoireInstalle;
this.identifiant = identifiant;
this.codeCarte=this.identifiant;
}
编辑:
如果我做:
carte1 =新的carteMere(10,8);
然后,我检查carte1,codeForme为10,并且应该为0,因为它应该已经在第一个构造函数中进行了修改。
最佳答案
与this
,marque
和indentifiant
一样,使用codeCarte
限定实例变量。如果不在验证范围之外,还可以在else
上使用if
为变量分配正常值。例如。对于codeForme
:
if(codeForme < 0 || codeForme > 9) {
this.codeForme = 0;
}
else {
this.codeForme = codeForme;
}
同样,对于
capaciteMaxMemoire
和memoireInstalle
。