0

次のパラメータが与えられます。

boolean a = true ;
boolean b = false ;
boolean c = true ;

このバージョンの最小限のコードが必要です。

if ( ( a && ! b) || ( ! a && b) ) {
    z1 += 99 ;
}

if (a ^ b) {
    z1 += 19 ;
}

if ( ( a && b) || ( ! a && ! b) ) {
    z1 += 118;
}

何を変更する必要がありますか?

4

3 に答える 3

9

最初の条件は 2 番目と同じで、3 番目は他の条件の否定なので、

if (a ^ b) {
   z1 += 99 + 19  // = 118
} else {
   z1 += 118
}

a または b が何であれ、z1 は 118 で拡張されるので、これをもう一度短くすることができます。

z1 += 118
于 2010-10-20T09:19:49.210 に答える
2

将来このようなことを理解する必要がある場合は、すべての可能な入力とそれぞれの結果を示す表を作成してみてください (これは真理値表と呼ばれていると思いますが、数学に詳しい人は私を訂正するかもしれません)。テーブルを作成したら、全体的なロジックをすばやく識別し、場合によっては単純化できるはずです。

上記のテーブルは次のようになります。

  a  |  b  |  z1
------------------
  t  |  t  |
  t  |  f  |
  f  |  t  |
  f  |  f  |

各行を調べて、列に z1 の効果を書きます。これにより、何が起こっているのか、可能であればそれを短縮する方法を簡単に判断できるようになります。

于 2010-10-20T09:34:15.730 に答える
1
if ( ( a && ! b) || ( ! a && b) ) {
}  

あなたが使用することができます

if ( a!=b) {
} 

if ( ( a && b) || ( ! a && ! b) ) {}  

あなたが使用することができます

if(a==b){}  

if (a ^ b) {}   

その場所で大丈夫です

于 2010-10-20T09:18:48.923 に答える