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