2

if ステートメントをさまざまな方法でレイアウトしてみました。入れ子になった if ステートメントも試しました。同じ結果が得られます。コードを表示する以外に質問する方法がわかりません。

#include <iostream>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
char playerOne, playerTwo;

cout<<"ROCK PAPER SCISSORS!"<<endl;
cout<<"Enter P for Paper"<<endl;
cout<<"Enter R for Rock"<<endl;
cout<<"Enter S for Scissors"<<endl;

cout<<"Player One enter your choice: ";
cin>>playerOne;

cout<<"Player Two enter your choice: ";
cin>>playerTwo;

if ((playerOne = 'R') && (playerTwo = 'R'))
    cout<<"Both players played same hand";
else if ((playerOne = 'R') && (playerTwo = 'P'))
    cout<<"Player Two wins!";
else if ((playerOne = 'R') && (playerTwo = 'S'))
    cout<<"Player One wins!";
else if ((playerOne = 'P') && (playerTwo = 'R'))
    cout<<"Player One wins!";
else if ((playerOne = 'P') && (playerTwo = 'P'))
    cout<<"Both players played same hand";
else if ((playerOne = 'P') && (playerTwo = 'S'))
    cout<<"Player Two wins!";
else if ((playerOne = 'S') && (playerTwo = 'R'))
    cout<<"Player Two wins!";
else if ((playerOne = 'S') && (playerTwo = 'P'))
    cout<<"Player One wins!";
else if ((playerOne = 'S') && (playerTwo = 'S'))
    cout<<"Both players played same hand";
else
    cout<<"Invalid inputs!";

getche();
return 0;
}
4

4 に答える 4

12

==代わりに二重記号が必要です=

==「に等しい」と読むことができます。

于 2012-09-18T01:43:44.330 に答える
6

==ではなく、 を使用する必要があります=。演算子==が等しいかどうかをテストし、演算子=が代入演算子である

を使用=することで、割り当てを行っており、同等性をテストしていません。したがって、割り当てられる値が (または事実上) 0 でない限り、割り当てが成功すると、条件は常に true と評価されます。 (pickypg に感謝)

于 2012-09-18T01:44:35.597 に答える
1

前述のとおり、 が必要==です。

ただし、ここで役立つプラクティスがいくつかあります。

まず、常に定数と関数の戻り値を最初に置きます。 if('R' = playerOne...)コンパイルに失敗し、これがどこにあるかを正確に教えてくれます。

次に、両方をテストする必要がないようにtolower()、入力を実行する (および定数を小文字にする) ことを検討してください。'R''r'

第 3 に、 を使用して複数の if ステートメントを削除できますif(playerOne == playerTwo)。残念ながら、両方のプレイヤーが同じ無効な文字を入力するのを避けるために、最初に入力の有効性チェックが必要です。ただし、最初の文字を入力して 'ERRR' を入力すると (コードで) 'ER' が無効になり、'RR' が実行されるなど、入力エラーが発生した場合に備えて、このチェックが必要になる場合があります。

第 4 に、ハードコーディングされた配列std::mapなどを使用してデータをエンコードし、すべての if ステートメントなしで使用することができます。

于 2012-09-18T01:54:29.867 に答える
0

他の人が指摘したように、 を使用したいと思うでしょう==

==は等しいかどうかをチェックするためのもので、は=次のような代入演算子ですint num = 1;

そしてあなたの場合、==あなたが必要とする演算子です。

于 2012-09-18T17:18:56.927 に答える