繁体   English   中英

if语句...我不知道为什么它没有触发

[英]if statement…I don't know why it's not triggering

condition is not being met to declare the winner. 出于某些奇怪的原因, 未满足条件的将宣布获胜者。 for the met condition. 我调试并跟踪了该条件的值,它为3个变量保留了值2,但不会触发满足条件的 我是想念流血的明显还是真的很累(是的...我很累)? 花了几个小时试图解决这个问题。 condition is met and executes it's statement...but for the life of me...the O does not. 满足条件并执行它的语句...但是对我而言,O不。

我尝试过{},而我没有尝试过{}。 我已经尝试了几乎所有内容...等等。

我只尝试了O值的条件,但没有用。 它不喜欢该死的2! 呵呵呵

 -(void)chkWinner   
  {
    NSLog(@"At the top of Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);

    if(tl_Int & tm_Int & tr_Int == 1)
    {
       NSLog(@" X is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
    }
    else if(tl_Int & tm_Int & tr_Int == 2)
    {
       NSLog(@" O is the WINNER %d %d %d", tl_Int, tm_Int, tr_Int);
    }
    else
    {
        NSLog(@"In Check Winner method, player %d %d %d ", tl_Int, tm_Int, tr_Int);
    }
}

这是被按下的按钮的代码。 它将值传递给方法...我只是不知道为什么它对一个值起作用而对另一个值不起作用。

-(IBAction) topLeftBtn:(id) sender
{

    if(playerX.enabled == true)
    {
        tl_Int = 1;
        NSLog(@" X %d ", tl_Int);
        [tlBtn setImage:[UIImage imageNamed:@"X.png"] forState:UIControlStateNormal];
        playerX.enabled = false;
        tlBtn.enabled = false;
        blockingBtn.enabled = true;
        blockingBtn.hidden = false;
        topLSquare.image = [UIImage imageNamed:nil];
        SEL methodSelector1 = @selector(chkWinner);
        [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];

    }    

    if(playerO.enabled == true)
    {
        tl_Int = 2;
        NSLog(@"TL O %d ", tl_Int);
        [tlBtn setImage:[UIImage imageNamed:@"O.png"] forState:UIControlStateNormal];
        playerO.enabled = false;
        tlBtn.enabled = false;
        blockingBtn.enabled = true;
        blockingBtn.hidden = false;
        topLSquare.image = [UIImage imageNamed:nil];
        SEL methodSelector1 = @selector(chkWinner);
        [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:methodSelector1 userInfo:nil repeats:NO];

     }

}

这甚至是输出窗口:

2013-07-25 00:43:08.167 [16079:c07] TR O 2 
2013-07-25 00:43:08.170 [16079:c07] At the top of Check Winner method, player 0 0 2 
2013-07-25 00:43:08.172 [16079:c07] In Check Winner method, player 0 0 2 
2013-07-25 00:43:10.934 [16079:c07] TM O 2 
2013-07-25 00:43:10.938 [16079:c07] At the top of Check Winner method, player 0 2 2 
2013-07-25 00:43:10.939 [16079:c07] In Check Winner method, player 0 2 2 
2013-07-25 00:43:14.444 [16079:c07] TL O 2 
2013-07-25 00:43:14.447 [16079:c07] At the top of Check Winner method, player 2 2 2 
2013-07-25 00:43:14.449 [16079:c07] In Check Winner method, player 2 2 2 

值存在,但是没有NSLog输出显示满足条件...发出断点并进入调试,进入代码,并在满足条件时在NSLog上移动。 救命...

您应该尝试两件事。

第一种是将所有单'&'更改为双'&&'(假设您正在检查AND。

第二个是询问每个变量是否等于1,而不是将它们全部加在一起。

一个好的if语句如下所示:

if(tl_Int == 1 && tm_Int == 1 && tr_Int == 1)

尝试计算tl_Int&tm_Int&tr_Int并将其分配给temp变量,然后在if / elseif条件下使用它。 -没有进行测试,但是您可能想尝试一下

只需将所有单个“&”更改为双“ &&”即可解决您的问题。

根据您的条件,NSLog调用取决于tr_Int的值,如果为1,则将调用第一个NSLog,如果为2,则将调用第二个NSLog,否则将调用第三个。

它只是检查tr_Int ==的条件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM