我用平等,讓我先在這裏添加的代碼遇到一個問題:Java的平等纏着我
Operateur o = new Operateur(nom, age, sexe, grade, role);
for(Operateur op : Membre.getOperateurs()){
if(o.equals((Object)op)){
already_exists = true;
break;
}
}
if(already_exists){
ret = ">Can't create it : already exists";
Membre.removeLast();
o.finalize();
}else{
ret = ">Created it";
}
在這裏,我檢查是否有新Operateur
不僅僅是一箇舊的副本(Membre.getOperateurs
讓我Membre
的所有實例列表,其實際爲Operateur
)。
我的問題是,當我運行這段代碼,如果我的Operateur
是全新的顯示爲已存在的(他應該不會,因爲他是全新的)。
例如,當我創建第一個Operateur
有史以來它評估它作爲一個已有的副本。
由於:
import cmd.*;
import matrice.*;
import persona.*;
import non_grata.non.*;
import non_grata.grata.*;
//all above is importing packages to use all classes required
public class Debug{
public static void out(String s){
System.out.println(s);
}//handy
public static void main(String[] args){
Membre.init();//Membre.membre = new ArrayList<Membre>();
Personnel.init();//Personnel.membre = new ArrayList<Membre>();
Vaisseau.init();//Vaisseau.vaisseaux = new ArrayList<Vaisseau>();
MatrixCmd cmd = new MatrixCmd();//Create the command parser
String parser_input = "afficherMembres";//get some input
String parser_output = cmd.execCommand(parser_input);//process it
out(parser_output);//use it
//empty list, correct since we only initialized it
parser_input = "newOPsion mikebike 10 o string string";
parser_output = cmd.execCommand(parser_input);
out(parser_output);
//outputs ">Impossible de créer cet Opérateur : Il existe déjà" which it shouldn't
//since there are no other Operateur and this is only
//given as output when it founds a similar Operateur
parser_input = "afficherMembres";
parser_output = cmd.execCommand(parser_input);
out(parser_output);
//outputs an empty list, meaning that there are no Membre created
//and therefore no Operateur
parser_input = "newOPsion mikebke 8 f tring sring";//command that will trigger the bit of code above
parser_output = cmd.execCommand(parser_input);
out(parser_output);
//outputs">Impossible de créer cet Opérateur : Il existe déjà" which it shouldn't
}
}
哦,surpise!當有人喊出「可能重複」的問題時,會自動將其標記爲重複,無論它是否爲真。我知道,因爲,哦,驚喜,改變每一個'=='的'.equals('在字符串比較並沒有改變一個東西\ o /。GJ @OliverCharlesworth – Vivick
@MadProgrammer:它不是重複的(見上) – Vivick
我很抱歉Vivick,但即使它不是重複的,問題質量也有點低,首先標題很糟糕 - 你指責Java是因爲你的問題,而不是理解不完全;其次,你給了一個很大的代碼轉儲而不是創建一個[MCVE];第三,你沒有提供理解'==''equals'之間差異的證據,如果你要求免費幫助,請花一些時間編輯你的問題代碼爲你正在努力實現的目標,迄今爲止的研究,以及當你調試它時會發生什麼 –