ConTinuE smil播放器!ng ( ...

(急)mm7怎样发送smil格式的彩信
[问题点数:100分,结帖人star0206]
(急)mm7怎样发送smil格式的彩信
[问题点数:100分,结帖人star0206]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年2月 移动平台大版内专家分月排行榜第二2012年1月 移动平台大版内专家分月排行榜第二2011年5月 移动平台大版内专家分月排行榜第二2011年4月 移动平台大版内专家分月排行榜第二2009年1月 移动平台大版内专家分月排行榜第二
2011年12月 移动平台大版内专家分月排行榜第三2011年11月 移动平台大版内专家分月排行榜第三2011年9月 移动平台大版内专家分月排行榜第三2011年8月 移动平台大版内专家分月排行榜第三2010年3月 移动平台大版内专家分月排行榜第三2010年2月 移动平台大版内专家分月排行榜第三2009年4月 移动平台大版内专家分月排行榜第三2009年3月 硬件/嵌入开发大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。11276人阅读
<font color="#02年12月发于 CCW-I2006年9月搬至 CSDN,略作修改
  Java 中有 goto 关键字,但这个关键字没有任何作用,换句话说,我们不能使用 goto 来进行跳转到某行。实际上,结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。  Java 中同样可以定义标签,使用标识符加冒号 (:) 的形式,如&mylabel:&。不过既然 Java 中的 goto 没有实质性的作用,标签的设计当然就不是为了 goto。  Java 中的标签是为循环设计的,是为了在多重循环中方便的使用 break 和 coutinue 而设计的。正是由于这个原因,Java 的标签只能定义在三种循环 (for() {}, do{} while(), while() {}) 的开始位置,否则编译器会报告说找不到标签。稍后的例子即可更直观的说明。  在循环前面加上标签,就好像给循环起了个名字。而后在循环中使用 break 或者 continue 语句的时候,就可以带上这个标签做为参数,指明跳出 (break) 或者继续 (continue) 哪一个循环,如&&、&&。现在请看下面的例 1,直观的了解标签的用法,其中的注释已经大略说明了每分部代码在干什么,而示例后面的解释会让你更加明白:  例 1:LabelExmaple.java
/**//*&*&@(#)&LabelExample.java&*&@author&James&Fancy&*//**&*//**&*&LabelExample&类将随机生成一个二维数组,&*&数组每一行中的数据都是从小到在的顺序排列,但各行间并没有排序。&*&同时,LabelExample&还会从生成的二维数组里随机找一个数作为要查找的数据。&*&随后在&search&方法中使用带标签的&break&和&continue&语句来优化查找代码。&*/public&class&LabelExample&...{&&&&/**&*//**&&&&&*&主程序。&&&&&*/&&&&public&static&void&main(String[]&args)&...{&&&&&&&&LabelExample&test&=&new&LabelExample(<span style="COLOR: #,&<span style="COLOR: #);&&&&&&&&test.printMatrix();&&&&&&&&System.out.println();&&&&&&&&test.search();&&&&}&&&&int&&//&二维数组的行数&&&&int&&//&二维数组每行的数据个数&&&&int[][]&&//&数组数据&&&&int&&//&要在数组中查找的数&&&&/**&*//**&&&&&*&构造函数,生成一个由&row&指定行数,由&col&指定列数的数组。&&&&&*/&&&&public&LabelExample(int&row,&int&col)&...{&&&&&&&&this.row&=&&&&&&&&&this.col&=&&&&&&&&&createMatrix();&&&&}&&&&/**&*//**&&&&&*&打印数组内容。&&&&&*/&&&&public&void&printMatrix()&...{&&&&&&&&System.out.println(&row&=&&&+&row&+&&,&col&=&&&+&col&+&&,&lookfor&=&&&&&&&&&&&&&&&&&&+&lookfor);&&&&&&&&for&(int&i&=&<span style="COLOR: #;&i&&&&i++)&...{&&&&&&&&&&&&for&(int&j&=&<span style="COLOR: #;&j&&&&j++)&...{&&&&&&&&&&&&&&&&System.out.print(& &&+&data[i][j]);&&&&&&&&&&&&}&&&&&&&&&&&&System.out.println();&&&&&&&&}&&&&}&&&&/**&*//**&&&&&*&演示查找过程,使用带标签的&break&和&continue&语句。&&&&&*/&&&&public&void&search()&...{&&&&&&&&//loop1:&&&&&&&&//&若在此处定义标签,由于不是其后紧跟循环语句,所以会被勿略掉。&&&&&&&&//&被忽略掉的标签,如果在&break&或者&continue&语句中用到,编译时不能通过。&&&&&&&&//&如果没有在&break&或者&continue&中用到则编译可以成功。&&&&&&&&System.out.println(&---&Begin&Searching&---&);&&&&&&&&loop1:&for&(int&i&=&<span style="COLOR: #;&i&&&&i++)&...{&&&&&&&&&&&&for&(int&j&=&<span style="COLOR: #;&j&&&&j++)&...{&&&&&&&&&&&&&&&&if&(data[i][j]&&&lookfor)&...{&&&&&&&&&&&&&&&&&&&&System.out.println(&---&JUMP&---&);&&&&&&&&&&&&&&&&&&&&continue&loop1;&//&想想此处用&break,结果会有什么变化&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&if&(data[i][j]&==&lookfor)&...{&&&&&&&&&&&&&&&&&&&&System.out.println(&FOUND:&data[&&+&i&+&&][&&+&j&+&&]&=&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&+&lookfor);&&&&&&&&&&&&&&&&&&&&break&loop1;&//&想想此处用&return,结果会有什么变化&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&System.out&&&&&&&&&&&&&&&&&&&&&&&&.println(&data[&&+&i&+&&][&&+&j&+&&]&=&&&+&data[i][j]);&&&&&&&&&&&&}&&&&&&&&&&&&System.out.println(&---&LOOP2END&---&);&&&&&&&&}&&&&&&&&System.out.println(&---&End&Searching&---&);&&&&}&&&&/**&*//**&&&&&*&生成随机数组和随机抽取要查找的数。&&&&&*/&&&&private&void&createMatrix()&...{&&&&&&&&data&=&new&int[row][];&&&&&&&&for&(int&i&=&<span style="COLOR: #;&i&&&&i++)&...{&&&&&&&&&&&&data[i]&=&new&int[col];&&&&&&&&&&&&int&t&=&<span style="COLOR: #;&&&&&&&&&&&&for&(int&j&=&<span style="COLOR: #;&j&&&&j++)&...{&&&&&&&&&&&&&&&&t&+=&(int)&(Math.random()&*&<span style="COLOR: #);&&&&&&&&&&&&&&&&data[i][j]&=&t;&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&lookfor&=&data[(int)&(Math.random()&*&row)][(int)&(Math.random()&*&col)];&&&&}}
  这段程序的运行结果如下:row = 3, col = 5, lookfor = 48&&&&11&&21&&22&&38&&39&&&&14&&22&&40&&55&&72&&&&11&&29&&38&&48&&63--- Begin Searching ---data[0][0] = 11data[0][1] = 21data[0][2] = 22data[0][3] = 38data[0][4] = 39--- LOOP2END ---data[1][0] = 14data[1][1] = 22data[1][2] = 40--- JUMP ---data[2][0] = 11data[2][1] = 29data[2][2] = 38FOUND: data[2][3] = 48--- End Searching ---
  由于程序中所有数据都是随机生成的,所以,运行该程序多次才得到上述较具代表性的结果。  上面程序中,createMatrix 方法和 printMatrix 方法都是工具,一个用于初始化数据,另一个则用于打印数组。而另一个方法 search 则是演示程序的关键之所在。  search 方法中打印的数据足以说明查找的过程。第一个 for 循环 (即标签为 loop1 的那个) 用于遍历二维数组中的所有组 (即每一行);第二个 for 循环嵌套在第一个 for 循环中,用来遍历每一组中的所有数据,以便依次查找。  如果第二个 for 循环对某组数据进行查找的过程中没有找到要查找的数据,则有两种情况:1) 该组的数据全都比要查找的数据小,那么这个循环能够被完整执行,则可以执行该循环之后的语句,即输出&--- LOOP2END ---&。2) 该组数据有比要查找的数据大的数据,那么在检查到第一个比要查找的数据大的数据时,执行了 continue loop1。此语句不仅跳出了第二个 for 循环,还中止了第一个 for 循环中尚未执行的语句,直接进行第一个 for 循环的下一次循环。这里有一个问题,如果把 continue loop1 改成 break 会怎么样呢?如果改了,输入结果就会是:&&&&--- JUMP ------ LOOP2END ---&&&&  造成这一现象的原因,是 braek 只中止了第二个循环,却没有中止第一个循环中尚未执行的语句。  现在在来看看找到了目标数据时的情况。如果找到了目标数据,则无论再执行哪一个循环都毫无意义了。所以,要中止掉两个循环。由于是在第二个循环中找到数据的,而第二个循环嵌套在第一个循环当中,如果直接 break 的话,则只能中止第二个循环,第一个循环仍然会继续;而使用 break loop1 则指定了中止第一个循环,既然第一个循环都被中止了,那么依赖于第一个循环的第二个循环当然也就被中止了。这里也有一个问题,为什么不用 return 呢?我想这个问题比上一个问题更好答,因为如果使用 return,那么这两个 for 循环之后的语句怎么办?  需要注意的是,这里的 continue 和 break 都用到了 loop1 标签。如果将代码中&System.out.println(&--- Begin Searching ---&);&和&loop1:&两条语句的位置交换一下,那么结果会怎么样呢?此时编译器会报告说找不到 loop1 标签。这就是上面提到的,标签定义之后必须紧接着循环语句的原因。不过,如果程序中没有任何一个 break 或者 continue 语句用到 loop1 的话,就无所谓 loop1 定义在哪里了,编译器会把它忽略掉的。
  最后,补充一句,一般情况下还是不要使用 label。如果遇到一些比较复杂的多重循环,我更愿意建议使用多个方法来执行每一层的循环,这样会让程序结构显得更加清楚一些。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:83298次
积分:1092
积分:1092
排名:第17613名
原创:22篇
评论:26条
(1)(1)(1)(1)(1)(3)(1)(1)(1)(3)(1)(1)(1)(8)

我要回帖

更多关于 smil播放器 的文章

 

随机推荐