Objective c For循环不起作用

Objective c For循环不起作用,objective-c,for-loop,uialertview,Objective C,For Loop,Uialertview,我正在尝试为学校制作一个猜谜应用程序 -(IBAction)check:(id)sender { if (answerField.text.length > 0) { [self number]; } else { UIAlertView *error = [[UIAlertView alloc] initWithTitle:@"Error"

我正在尝试为学校制作一个猜谜应用程序

-(IBAction)check:(id)sender
{
    if (answerField.text.length > 0)
    {
        [self number];
    }
    else
    {
        UIAlertView *error = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:@"Please type in more than one chracter"
                              delegate:self
                              cancelButtonTitle:@"Okay!"
                              otherButtonTitles:nil];

        [error show];
    }
}
-(void)number
{

    for (int i = 0; i < 100; i++)
    {
        if (answerField.text > strNumber)
        {

            hlLabel.text = @"Guess Lower";
            answerField.text = @"";
        }
        if (answerField.text < strNumber)
        {

            hlLabel.text = @"Guess Higher";
            answerField.text = @"";
        }
    }


}
-(iAction)检查:(id)发送方
{
如果(answerField.text.length>0)
{
[自我编号];
}
其他的
{
UIAlertView*错误=[[UIAlertView alloc]
initWithTitle:@“错误”
信息:@“请输入多个字符”
代表:赛尔夫
取消按钮:@“好的!”
其他按钮:无];
[错误显示];
}
}
-(无效)编号
{
对于(int i=0;i<100;i++)
{
if(answerField.text>strNumber)
{
hlLabel.text=@“猜测下限”;
answerField.text=@”;
}
if(answerField.text
问题:for循环不工作。它只检查一次。而且,每次检查时,它总是说“猜得更高”,而事实上,我猜得比计算机生成的数字高


其他信息:我有一个方法,每次单击文本字段中的键盘,它都会检查数字方法

answerField.text
返回的是
NSString
,而不是数字

尝试
answerField.text.intValue


另外,
strNumber
必须是一个整数才能工作。

answerField。text
返回的是一个
NSString
,而不是一个数字

尝试
answerField.text.intValue


而且,strNumber必须是一个整数才能起作用,顺便说一句。

我花了一些时间才明白你想做什么。但我怀疑您只是想让用户在字段中输入一些数字,以猜出最多100次的数字。差不多吧

但是for循环不是让用户重试某件事情的方式。您需要的是保存在对象(即ivar)中的某个状态,该状态统计每次尝试的次数

这里的第二个问题是,你们似乎在数字上比较字符串,这在这里是没有意义的。您想要比较数值

因此,您的程序可能如下所示:

-(IBAction)check:(id)sender
{
    if (answerField.text.length > 0)
    {
        [self checkFieldValueAgainstCorrectAnswer]; // use better naming
    }
    else
    {
        UIAlertView *error = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:@"Please type in more than one chracter"
                              delegate:self
                              cancelButtonTitle:@"Okay!"
                              otherButtonTitles:nil];

        [error show];
    }
}

-(void)checkFieldValueAgainstCorrectAnswer
{
    NSUInteger fieldValue = [answerField.text unsignedIntegerValue];
    NSUInteger correctValue = [strNumber unsignedIntegerValue];
    if (fieldValue > correctValue) {
        // guess lower
    } else if(fieldValue < correctValue) {
        // guess higher
    } else {
        // you won!
        return;
    }
    answerField.text = @"";
    attempts++;
    if (attempts > 100) {
        // Too many attemps, you lost!
    }
 }
-(iAction)检查:(id)发送方
{
如果(answerField.text.length>0)
{
[self-checkFieldValueAgainstCorrectAnswer];//使用更好的命名
}
其他的
{
UIAlertView*错误=[[UIAlertView alloc]
initWithTitle:@“错误”
信息:@“请输入多个字符”
代表:赛尔夫
取消按钮:@“好的!”
其他按钮:无];
[错误显示];
}
}
-(无效)对照正确答案检查字段值
{
NSUInteger字段值=[answerField.text unsignedIntegerValue];
NSUInteger correctValue=[strNumber unsignedIntegerValue];
如果(fieldValue>correctValue){
//猜低一点
}else if(fieldValue100){
//尝试太多,你输了!
}
}

我花了一些时间才明白你想做什么。但我怀疑您只是想让用户在字段中输入一些数字,以猜出最多100次的数字。差不多吧

但是for循环不是让用户重试某件事情的方式。您需要的是保存在对象(即ivar)中的某个状态,该状态统计每次尝试的次数

这里的第二个问题是,你们似乎在数字上比较字符串,这在这里是没有意义的。您想要比较数值

因此,您的程序可能如下所示:

-(IBAction)check:(id)sender
{
    if (answerField.text.length > 0)
    {
        [self checkFieldValueAgainstCorrectAnswer]; // use better naming
    }
    else
    {
        UIAlertView *error = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:@"Please type in more than one chracter"
                              delegate:self
                              cancelButtonTitle:@"Okay!"
                              otherButtonTitles:nil];

        [error show];
    }
}

-(void)checkFieldValueAgainstCorrectAnswer
{
    NSUInteger fieldValue = [answerField.text unsignedIntegerValue];
    NSUInteger correctValue = [strNumber unsignedIntegerValue];
    if (fieldValue > correctValue) {
        // guess lower
    } else if(fieldValue < correctValue) {
        // guess higher
    } else {
        // you won!
        return;
    }
    answerField.text = @"";
    attempts++;
    if (attempts > 100) {
        // Too many attemps, you lost!
    }
 }
-(iAction)检查:(id)发送方
{
如果(answerField.text.length>0)
{
[self-checkFieldValueAgainstCorrectAnswer];//使用更好的命名
}
其他的
{
UIAlertView*错误=[[UIAlertView alloc]
initWithTitle:@“错误”
信息:@“请输入多个字符”
代表:赛尔夫
取消按钮:@“好的!”
其他按钮:无];
[错误显示];
}
}
-(无效)对照正确答案检查字段值
{
NSUInteger字段值=[answerField.text unsignedIntegerValue];
NSUInteger correctValue=[strNumber unsignedIntegerValue];
如果(fieldValue>correctValue){
//猜低一点
}else if(fieldValue100){
//尝试太多,你输了!
}
}

strNumber从哪里来?在循环的每个周期中,您不应该要求用户输入吗?另外,为什么要循环这个?重点是什么?我的意思是,你有一个动作要检查,所以没有必要循环它。只需要一个if/then语句。就这些,现在你唯一的问题是它检测不正确。当然,这几乎肯定是你的错误。你只需要找到它。所以,代码你们们请展示你们们是如何设置strNumber的。strNumber是从哪里来的?你们们不应该要求用户在循环的每个周期中输入吗?还有,你们们为什么要循环这个?重点是什么?我的意思是,你有一个动作要检查,所以没有必要循环它。只需要一个if/then语句。就这些,现在你唯一的问题是它检测不正确。当然,这几乎肯定是你的错误。你只需要找到它。所以,代码你请说明你是如何设置strNumber的。所以之前,循环会比较一个地址和一个整数。。。太棒了。是的,那就够了。干得好!对于OP的信息,answerField.text提供一个NSString。NSStrings