-1

テキストフィールドに入力されたテキストが配列内のオブジェクトと一致する場合、整数に1を削除または追加するアプリを作成しようとしています。

.mファイルのコード

NSString *inputtwo =EnterNameText.text;
BOOL isItright = NO;
for(NSString *possible in scoreArray1)
{
    if([inputtwo isEqual:possible] )
    {
        isItright = YES;
        break;
    }
}

NSString *wronginput = EnterNameText.text;
BOOL isWrong = NO;
for(NSString *wrong in scoreArray1)
{
    if(![wronginput isEqual:wrong ] )
    {
        isWrong = YES;
        break;
    }
}

static int myInt;

if(isItright)
{
    myInt++;

    NSString *score = [NSString stringWithFormat:@"%d", myInt];
    [scorelabel setText:score];
}

if (isWrong)
{
    myInt--;

    NSString *score = [NSString stringWithFormat:@"%d", myInt];
    [scorelabel setText:score];
}

したがって、プログラムは、scoreArray1という配列に一致するものがあるかどうかをチェックし、一致する場合はmyIntに1を追加し、一致しない場合は1つ削除します。

問題は、それが正しいか間違っているかに関係なく、1つだけを奪うことです。

御時間ありがとうございます。

4

3 に答える 3

2

isEqualToString文字列値を比較する場合に使用する必要があります。メソッドはisEqual通常、ポインター値を比較するため、テキスト フィールドから取得したものと配列に入力したものは常に異なる値を返します。

于 2012-10-22T20:50:21.400 に答える
0
NSString *input = EnterNameText.text;
BOOL matchFound = NO;
static in myInt;

for (NSString *score in scoreArray1)
    if ([input isEqualToString:score])
    {
        matchFound = YES;
        break;
    }

if (matchFound)
    myInt++;
else
    myInt--;
于 2012-10-22T21:35:49.653 に答える
0

プログラムに論理エラーがあります。まず、テキスト フィールドの内容が任意の要素と一致するかどうかを確認し、一致するscorearray1場合isItrightは true です。この時点まではすべて正しいです (ただし、等値チェックは で行う方が適切ですisEqualToString)。ただしscorearray1、テキストフィールドのコンテンツが含まれていないかどうかを確認し、1 つの要素のみがテキストフィールドとscorearray1一致しないisWrong場合は true になります。

最初のループと次の のみを使用してくださいif else。textfield の内容が のいずれかの文字列と等しい場合はscorearray1に 1 を加算しmyInt、そうでない場合 (配列に一致するものがない場合) は 1 を減算します。

次のコードを使用します。

NSString *inputtwo =EnterNameText.text;
BOOL isItright = NO;
for(NSString *possible in scoreArray1)
{
    if([inputtwo isEqualToString:possible] )
    {
        isItright = YES;
        break;
    }
}

static int myInt;

if(isItright)
{
    myInt++;
}
else
{
    myInt--;
}
NSString *score = [NSString stringWithFormat:@"%d", myInt];
[scorelabel setText:score];
于 2012-10-22T21:05:59.760 に答える