Java:关于此要求的三元运算符

时间:2012-02-10 20:01:00

标签: java

<Student>
<number>122</number>
<CVF>PG</CVF>
</Student>

class Student 
{
char grade 
}

现在,我需要通过解析上面的XML来设置上面学生对象的成绩值

XML中的这个CVF元素可以有两个值PG或MQ

根据业务,如果是PG,则其值应为1或0

我用这种方式定义。

Student.grade = (attribute.getValue().toString()=="PG"?'1' : '0');

如果有更好的代码适合上述要求,请告诉我?

3 个答案:

答案 0 :(得分:1)

几点:

  1. 我不知道您使用的是什么XML库,但&lt; CVF&gt;不是属性。但我们假设attribute.getValue()是正确的。
  2. 如果attribute.getValue()返回字符串,则没有理由致电toString()
  3. 比较equals()时使用Strings not ==,除非您知道他们是实习生。
  4. 除非是静态字段,否则不要写Student.grade。你有一个类型的变量 Student名称为s,然后您可以说s.grade
  5. 如果输入尚未验证,您可能希望删除三元运算符并执行以下操作:

  6. Student s = ...
    String val = attribute.getValue().toString();
    if ("PG".equals(val)) {
        s.grade = '1';
    }
    else if ("MQ".equals(val)) {
        s.grade = '0';
    }
    else {
        throw new RuntimeException("illegal value for CVF: " + val);
    }
    

答案 1 :(得分:0)

假设等级定义为char。

Student.grade =(“PG”.equals(attribute.getValue()。toString())?'1':'0');

答案 2 :(得分:0)

不要将字符串与&#34; =&#34;进行比较。这样做总是更好。

Student.grade =(&#34; PG&#34; .equals(attribute.getValue()。toString()))?&#39; 1&#39; :&#39; 0&#39;;