2011-10-24 25 views
0
int side1test; 
NSLog(@"Is your triangle setup as in an Angle-Side-Angle? (Use 1 for Yes and 0 for No.)"); 
scanf(" %i", &side1test); 

ユーザーが "y"を入力すると "0"を返します。しかし、なぜObjective-Cコンパイラは "y"を "0"として返しますが、 "if input == 0"セクションをスキップしますか?

if (side1test != 1 && side1test != 0){ 
     NSLog(@"Please use a '1' for YES and '0' for NO."); 
    } 

次に、キャッチしません。

プログラムは私のelse節に落ち、scanf()コマンドをスキップしてすべてのNSLogを出力し、それぞれを "0"とします。ここで何が間違っていますか?

+0

は、あなたがリターンとはどういう意味ですか? scanfは、side1テストの値とは異なる成功した入力の数を返します。 – taskinoor

+0

'NSLog(@"%i "、side1test)'と入力すると、出力は0になります。 –

答えて

1

私はC++開発者ではありませんが、この機能は有効な一致の数を返します。 0が返された場合、無効な入力とみなされます。 side1testは、それが0

あなたのコードは、おそらくあるべきだ理由である設定されていない: -

int side1test; 
NSLog(@"Is your triangle setup as in an Angle-Side-Angle? (Use 1 for Yes and 0 for No.)"); 
int result = 0; 
while (result==0) 
{ 
    result =scanf(" %i", &side1test); 
} 
if (side1test != 1 && side1test != 0){ 
     NSLog(@"Please use a '1' for YES and '0' for NO."); 
    } 
+0

このように接近した場合、ユーザーが「いいえ」に「0」を入力すると、もう一度彼女に?答えは? –

+0

0は有効な入力となり、結果は1になりますが、side1testの値は0になります。最大の問題は、ユーザーが2を入力した場合です。これにより有効な結果が得られますが、side1testの値は2.これはあなたのnslogによって検出されます。 –

関連する問題