【问题标题】:If statement after rand() in Objective-CObjective-C 中 rand() 之后的 if 语句
【发布时间】:2012-09-12 08:53:00
【问题描述】:

我是 Objective-C 和 C 语言的初学者。

我的代码如下:

- (IBAction)button:(id)sender {
    int randomproces = rand() % 3;
    switch (randomproces) {
        case 0:
            //do this
            break;
        case 1:
            //do this
            break;
        case 2:
            //do this
            break;
        default;
            break;
    }
}

现在我想为另外 3 个按钮设置一些东西,以根据随机情况使它们正确或不正确。

- (IBAction)b1:(id)sender {
    //if case 0 then set it correct
    //else incorrect
}

- (IBAction)b2:(id)sender {
    //if case 1 then set it correct
    //else incorrect
}

// etc

我该怎么做?

【问题讨论】:

  • @Joachim:这是一项艰巨的工作,编辑并且只触及空白......干得好!
  • 让我看看我是否更了解你:你一共有四个按钮,第一个选择一个随机值,这个随机值将在其他按钮的处理程序中使用?
  • 是的,没错!抱歉,我无法编辑该代码,但我真的找不到如何添加代码的选项。

标签: objective-c random if-statement switch-statement


【解决方案1】:

如果我正确理解了您的问题,您是否想在 b1b2b3 的处理程序中根据在处理程序中为 button 选择的随机值做不同的事情?

我认为最简单的情况可能是在button 中将随机数变量设为全局变量,并在其他三个按钮处理程序中使用它:

int randomprocess = -1;

- (IBAction)button:(id)sender {
    randomproces = rand() % 3;
    // Do other stuff if needed
}

- (IBAction)b1:(id)sender {
    if (randomprocess == 0) {
        // Do something
    } else {
        // Do something else
    }
}

- (IBAction)b2:(id)sender {
    if (randomprocess == 1) {
        // Do something
    } else {
        // Do something else
    }
}

- (IBAction)b3:(id)sender {
    if (randomprocess == 2) {
        // Do something
    } else {
        // Do something else
    }
}

【讨论】:

  • 对不起,您可能没有理解我的问题。我知道如何使用随机语句。现在我需要的是如何设置另一个按钮 if 语句。让我给你看一个例子。您有 5 张照片(狗、猫、大象、狮子和马的照片)。你会让它们随机显示。你有 5 个按钮,上面有这些动物的名字。我想要做的是将此按钮设置为正确答案。因此,如果随机图片是大象,请将名称为 elephat 的按钮设置为正确。对吗?
  • @user1291672 好的,看看我修改后的答案。
  • 对不起,我没有真正明白:/ 我的代码看起来像: - (IBAction)button:(id)sender { int randomproces = rand() % 3; switch (randomproces) { case 0: //do this break;案例1://做这个休息;案例2://做这个休息;默认;休息;现在我想为另外 3 个按钮设置一些东西,以根据随机情况使它们正确或不正确。 - (IBAction)b1:(id)sender { //如果情况 0 则设置正确 //否则不正确 - (IBAction)b2:(id)sender { //如果情况 1 则设置正确 //否则不正确 etc
  • @TomasJ 那么,你有像我的答案的第一个版本一样的代码吗?它出什么问题了?它确实允许您从有限数量的随机数中进行选择,但我修改后的答案也是如此。您只需使用 randomprocess 作为您想要在其中选择的事物的数组中的索引。
  • @TomasJ 你似乎一直在改变你提出的问题。 更新您的问题,而不是将其放入 cmets 中!
【解决方案2】:

你需要使用switch语句,因此

switch (num)
{
    case 1:
        //do code
        break;

    case 2:
        //more code
        break;

    default:
        //num didn't match any of the cases.
        //process as appropriate
}

注意事项:

  • 每个案例结束时的休息很重要。如果你省略了这个,case 会落入下一个 case。虽然这有时是故意的,但通常不是故意的,并且会导致微妙且难以理解的错误。
  • “默认”标签和代码是可选的。然而,在特殊情况下使用默认情况是一种很好的编程风格,因为可能出现了问题,您应该这样处理。

【讨论】:

  • 让我给你看一个例子。您有 5 张照片(狗、猫、大象、狮子和马的照片)。你会让它们随机显示。你有 5 个按钮,上面有这些动物的名字。我想要做的是将此按钮设置为正确答案。因此,如果随机图片是大象,请将名称为 elephat 的按钮设置为正确,其他按钮设置为错误。对吗?
  • 这不是一个例子,这是在问一个不同的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
  • 2015-03-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2015-08-02
相关资源
最近更新 更多