[objective-C基础]选择结构
程序中的选择 (selection) 就是依条件 (condition) 使程序有不同的执行方向,若条件为真,也就是 true (YES) ,程序就会跳过 false (NO) 的部份执行 true 的部份,反之亦然

选择结构有单一选择跟多重选择,两者都可使用 if 陈述 (if statement) , if 为关键字 (keyword) 之一,若是多重选择 if 须与 else 连用。单一选择,也就是单独使用 if 陈述如下
- if (3 > 5) {
- NSLog(@"喔,3大于5发生了!");
- }
以上条件为 3 大于 5 ,如果 3 大于 5 为真,程序就会执行条件后的大括弧的程序区块 (block) ,如果 3 大于 5 为假,程序自然跳过条件后的程序区块,去找区块后的第一个陈述 (statement) 执行。
if 与 else 连用,条件为真,执行 if 后的程序区块,条件为假,就执行 else 后的程序区块
- if (3 > 5) {
- NSLog(@"喔,3大于5发生了!");
- }
- else {
- NSLog(@"还好,3没有大于5!");
- }
if-else 也可以多个连用,形成 if-else if-else 的多重选择,最后的 else 表示以上皆非
- if (3 > 5) {
- NSLog(@"喔,3大于5发生了!");
- }
- else if (4 > 5) {
- System.out.println("喔,4大于5发生了!");
- }
- else if (5 > 5) {
- NSLog(@"喔,5大于5发生了!");
- }
- else if (6 > 5) {
- NSLog(@"6当然大于5哩!");
- }
- else {
- NSLog(@"以上没有符合的条件 :(");
- }
我们将以上写成完整的范例程序,如下
- // 示范 if-else 的类别
- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSString *output = @"\n\n";
- [output autorelease];
- if (3 > 5) {
- output = [output stringByAppendingString: @"喔,3大于5发生了!"];
- }
- else if (4 > 5) {
- output = [output stringByAppendingString: @"喔,4大于5发生了!"];
- }
- else if (5 > 5) {
- output = [output stringByAppendingString: @"喔,5大于5发生了!"];
- }
- else if (6 > 5) {
- output = [output stringByAppendingString: @"6当然大于5哩!"];
- }
- else {
- output = [output stringByAppendingString: @"以上没有符合的条件 :("];
- }
- output = [output stringByAppendingString: @"\n\n"];
- NSLog(output);
- [pool drain];
- return 0;
- }
if-else if-else 多重选择的缺点是需要很多个条件,程序需要做很多个条件判断,因此另外有个 switch (switch statement) ,条件为一个常数 (constant) 值,然后程序自动寻找符合的 case 。同样的 switch 、 case 也都是关键字
- switch (6) {
- case 3:
- System.out.println("选择是3...");
- break;
- case 4:
- System.out.println("选择是4...");
- break;
- case 5:
- System.out.println("选择是3...");
- break;
- case 6:
- System.out.println("选择是6...");
- break;
- default:
- System.out.println("以上没有符合的条件 :(");
- }
这里, switch 后面的小括弧必须是常数值,此例中直接使用常数 (constant) ,也可以使用有常数值的变量 (variable) 。 case 后空一格,然后也是接常数值,通常就是直接填入符合情况的字面常数,注意,每个 case 的常数后都要接冒号。
case 底下的陈述,习惯上没有用大括弧,而是用缩排 (indentation) 的方式表示属于哪个 case 的工作。每个 case 最后,我们都有加上 break 陈述 (break statement) ,这是中断跳出执行的意思,就是说,这个 case 符合并且执行了 case 所属的工作,到此跳出 switch-case 的范围,程序继续执行switch 大括弧后的陈述。
switch-case 最下面有个 default , default 就是默认情况,如果以上皆非就会执行 default 的工作,这跟 if-else if-else 最后的 else 的用法相同。但是,如果 case 后没有 break ,每一次执行 default 都会被执行。同样的, break 与 default 也都是关键字之一。
我们将此例写成完整的范例程序,如下
- // 示范 switch-case 的类别
- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[]) {
- NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSString *output = @"\n\n";
- [output autorelease];
- switch (6) {
- case 3:
- output = [output stringByAppendingString: @"选择是3..."];
- break;
- case 4:
- output = [output stringByAppendingString: @"选择是4..."];
- break;
- case 5:
- output = [output stringByAppendingString: @"选择是5..."];
- break;
- case 6:
- output = [output stringByAppendingString: @"选择是6..."];
- break;
- default:
- output = [output stringByAppendingString: @"以上没有符合的条件 :("];
- }
- output = [output stringByAppendingString: @"\n\n"];
- NSLog(output);
- [pool drain];
- return 0;
- }
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
