我是编程新手。我很难发现这有什么问题。这是一个警报视图,我试图随机化消息中显示的文本。
-(void)alert:(id)sender{
int randomNumber;
randomNumber = (randomNumber() %3 + 1);
NSLog(@"%i", randomNumber);
if (randomNumber == 1) {
self.YouWin.text = [NSString stringWithFormat:@"You Win"];
}
else if (randomNumber == 2) {
self.YouWin.text = [NSString stringWithFormat:@"You Lose"];
}
else if (randomNumber == 3) {
self.YouWin.text = [NSString stringWithFormat:@"Tie"];
}
NSLog(@"%@",YouWin);
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello" message:[NSString stringWithFormat:@"%@",YouWin] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alert show];
button.hidden = YES;
答案 0 :(得分:2)
试试这个:
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello"
message:self.YouWin.text
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
您需要存储在YouWin
中的文本值,但是您自己传递了YouWin对象。
* 注意:您可以使用arc4random()
生成随机数。
答案 1 :(得分:1)
有很多好的建议;我同意AKB8085。
用randomNumber()
替换arc4random()
将有助于编译时。
但您可能希望重新考虑实施随机数生成器。原因在于您的用户是否公平。我提出了一个问题,“假设你希望你的用户用这么大的数字范围来猜测一个数字,这是否公平?”
你知道吗?
使用arc4random(3),rand(3)或random(3)您正在使用C函数。
您要求用户猜测具有以下范围的数字:
arc4random(3)
= 0
至4294967296
rand(3)
和random(3)
最高RAND_MAX
0x7fffffff
(214748647)
要帮助回答您的问题,请回答以下要求问题:
arc4random(3)
, rand(3)
, or random(3)
?NSArray
是更好的答案吗? <强> SUGGESTION:强>
阅读有关随机数和NSArray
的文章。
注意:强> 随机数往往会给编译器带来任务,并且会妨碍您的用户体验。
答案 2 :(得分:0)
替换
randomNumber = (randomNumber() %3 + 1);
带
randomNumber = arc4random() %3 + 1;
也可以使用这个...
if (randomNumber == 1) {
self.YouWin.text = [NSString stringWithFormat:@"You Win"];
}
else if (randomNumber == 2) {
self.YouWin.text = [NSString stringWithFormat:@"You Lose"];
}
else if (randomNumber == 3) {
self.YouWin.text = [NSString stringWithFormat:@"Tie"];
}
NSLog(@"%@",YouWin);
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello"
message:self.YouWin.text
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
button.hidden = YES;
答案 3 :(得分:0)
正如Anoop所说,你正在使用stringWithFormat
,但你根本没有提供格式字符串。
你应该做
[NSString stringWithFormat:@"%@", @"You Win"];
但这非常多余,虽然正确,但它完全等同于使用@"You Win"
。
也是关于问题的一般方法的建议。不要使用大if-else
语句,最好将所有字符串存储到数据结构中,然后随机访问它。
在代码中,这将转换为
NSArray * outcomes = @[ @"You Win", @"You lose", @"Tie" ];
int randomIndex = arc4random_uniform(outcomes.count);
NSString * randomOutcome = outcomes[randomIndex];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Hello"
message:randomOutcome
delegate:self
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
button.hidden = YES;
请注意arc4random_uniform()
的用法,它会返回0和提供的参数之间的随机数,不包括在内。