2012-02-10 7 views
0
<Student> 
<number>122</number> 
<CVF>PG</CVF> 
</Student> 

class Student 
{ 
char grade 
} 

のための三項演算子に関して、私はこのCVF要素はXMLでのJava:この要件今

上記のXMLを解析することにより、上記の学生オブジェクトのグレード値を設定する必要は、2つの値を持つことができますPGまたはMQ

事業を1として、それがPGである場合、その値は、私はこのように定義された1またはそれ以外0

のいずれかである必要があり。

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

上記の要件に適したコードがあれば教えてください。

答えて

0

グレードがcharと定義されていると仮定します。

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

+0

その:入力が検証されていない場合は

  • は、あなたのような何かを三項演算子をドロップし、やりたいことがあります。 –

  • +0

    同意します。私はあなたがコメントしている間に編集の編集中です。 – kosa

    0

    文字列を "="で比較しないでください。その代わりに常にこれを行う方が良い。

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

    1

    いくつかのポイント:

    1. 私はあなたが使用しているXMLライブラリを知りませんが、<CVF>は属性ではありません。しかし、attribute.getValue()が正しいと仮定しよう。
    2. attribute.getValue()が文字列を返す場合、toString()を呼び出す理由はありません。
    3. を使用してください。もしあなたが拘束されていない場合は、Stringsを比較してください。
    4. 静的フィールドでない限り、Student.gradeは書き込まないでください。変数 Studentの名前(例:s)を持ち、s.gradeと言うことができます。 NullPointerExceptionが発生を避けるために、最初にして値を文字列をチェックした方が良い


    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); 
    }