2015-11-27 4 views
-6

В настоящее время я пишу код, где я использую перечисление ниже.Enum не инициализирует правильное значение

public enum ConditionCode { 
    EQ, SEQ, NE, SNE, CS, SCS, HS, SHS, CC, SCC, LO, SLO, MI, SMI, PL, SPL, VS, SVS, VC, 
    SVC, HI, SHI, LS, SLS,GE, SGE, LT, SLT, GT, SGT, LE, SLE, SAL, AL 
} 

Я хочу, чтобы получить перечисление ConditionCode.ALS и распечатать его и сравнить его с AL, делая это

public static void main(String[] args) { 
    ConditionCode sal = ConditionCode.SAL; 
    System.out.print(sal.toString + " "); 
    System.out.println(sal.compareTo(ConditionCode.AL) == 0); 
} 

Что я нахожу странным, что эта команда печатает AL и не SAL false и те же для все остальные перечисления, например

public static void main(String[] args) { 
    ConditionCode cc = ConditionCode.CC; 
    System.out.print(cc.toString + " "); 
    System.out.println(cc.compareTo(ConditionCode.AL) == 0); 
} 

будут печатать AL и не CC false. Могу ли я узнать, почему он это делает? И как я могу это исправить?

+5

Ваш код не подлежит компиляции. Он потерпит неудачу в 'sal.toString' (parens as missing). – fge

+0

это будет потому, что он будет использовать java.Lang.Enum.toString(), если вам нужно изменить вывод перечисления, например, если вы хотите, чтобы все перечисления в вашем классе печатали 'S', вы должны переопределить function toString с чем-то вроде 'public String toString() {return 'S'; } 'в противном случае по умолчанию toString является' public String toString() {return super.toString(); } ' –

ответ

2

Эта программа печатает http://ideone.com/uXiIj8 как ожидалось

public static void main (String[] args) throws java.lang.Exception 
{ 
    { 
     ConditionCode sal = ConditionCode.SAL; 
     System.out.print(sal + " "); 
     System.out.println(sal.compareTo(ConditionCode.AL) == 0); 
    } 
    { 
     ConditionCode sal = ConditionCode.CC; 
     System.out.print(sal + " "); 
     System.out.println(sal.compareTo(ConditionCode.AL) == 0); 
    } 
} 

public enum ConditionCode { 
    EQ, SEQ, NE, SNE, CS, SCS, HS, SHS, CC, SCC, LO, SLO, MI, SMI, PL, SPL, VS, SVS, VC, 
    SVC, HI, SHI, LS, SLS,GE, SGE, LT, SLT, GT, SGT, LE, SLE, SAL, AL 
} 

печатает

SAL false 
CC false 

Могу ли я узнать, почему он делает это? И как я могу это исправить?

Скорее всего, вы меняете код и перекомпилируете программу перед ее запуском, или вы запускаете другую программу в соответствии с тем, что вы считаете. Я бы удостоверился, что ваша IDE настроена правильно, чтобы перекомпилировать вашу программу перед ее запуском и, возможно, перезапустить ее, если она выглядит нормально.

+1

Спасибо за ответ, но я нашел, где проблема была в моем коде, я просто не передал правильный аргумент в своей функции –

Смежные вопросы