流程控制
Posted ninety
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流程控制相关的知识,希望对你有一定的参考价值。
流程控制
在Java中循环有4种方式分别是while、do-while、for和foreach,下面我们分别介绍.
while
while的语法为:
//while和if的语法很像,只是把if换成了while
//它表达的含义也非常简单,只要条件语句为真,就一直执行后面的代码块,知道条件为假跳出循环
while(条件语句){
代码块
}
//例:
Scanner reader= new Scanner(System.in);
System.out.println("Please input password");
int num=reader.nextInt();
int password=6789;
while(num!=password){
System.out.println("Please input password");
num=reader.nextInt();
}
System.out.printLn("correct");
reader.close();
do-while
do-while的语法为
do{
代码块
}while(条件语句);
//do-while的循环体至少执行一次
//例:
Scanner reader=new Scanner(System.in);
int password=6789;
int num=0;
do{
System.out.println("Please input password");
num=reader.nextInt();
}while(num!=password);
System.out.printLn("correct");
reader.close();
for循环
for
for的语法为
for(定义循环变量;循环条件的判断;循环变量的改变){
代码块
}
//执行顺序
//(1)执行初始化指令定义循环变量;
//(2)检查循环条件是否为true,如果为false,则跳转到第6步;
//(3)循环条件为真,执行循环体;
//(4)执行步进操作;
//(5)步进操作执行完后,跳转到第2步,即继续检查循环条件;
//(6)for循环后面的语句。
foreach
foreach语法为
for (循环元素的类型 循环中的每个元素:要遍历的数组或集合){
代码块
}
循环的嵌套
九九乘法表:
for (int i = 1; i <=9; i++) {
for (int j = 1; j <=i ; j++) {
System.out.print(j+"*"+i+"="+(i*j)+" ");
}
System.out.println();
}
for (int i = 1,j=1; i <=9 ; ) {
System.out.print(j+"*"+i+"="+i*j+" ");
j++;
if (j > i) {
System.out.println();
i++;
j=1;
}
}
打印三角形:
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 5; i >0 ; i--) {
for (int j = 5-i; j > 0; j--) {
System.out.print(" ");
}
for (int j = i;j>0 ; j--) {
System.out.print("*");
}
System.out.println();
}
for (int i=1,j=1;i<=4;){
System.out.print("*");
j++;
if (j == 6) {
System.out.println();
i++;
j=1;
}
}
循环控制
break和continue
break:作用于选择结构和循环结构,表示终止当前的一层循环.
continue:只能作用于循环结构,表示跳出当前的一次循环继续下次循环
循环的标号
实现原理
和if一样,循环内部也是靠条件转移和无条件转移指令实现的,比如下面的代码:
int[] arr = {1,2,3,4};
for(int i=0; i<arr .length; i++){
System. out. println(arr[i]);
}
其对应的跳转过程可能为:
int[] arr={1,2,3,4};
int i=0;
条件跳转:如果i>=arr.length,跳转到第7行
System. out. println(arr[i]);
i++;
无条件跳转,跳转到第3行
其他代码
在if中,跳转只会往后面跳,而for会 往前面跳,第6行就是无条件跳转指令,
跳转到了前面的第3行。
break/continue语句也都会转换为跳转指令,具体就不赘述了。
练习
- 判断一个数是否是质数---一个数除了1和本身不能整出其他的数字
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
for (int i = 2; i < Math.sqrt(a); i++) {
if (a%i==0){
System.out.println(a+"不是质数");
return;
}
}
System.out.println(a+"是质数");
- 分解质因数
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
while (a !=1){
for (int i = 2; i <= a; i++) {
if (a % i == 0) {
System.out.print(i + " ");
a /= i;
break;
}
}
}
以上是关于流程控制的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段
Android 逆向整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmOptimizeDexFile() 方法分析 | /bin/dexopt 源码分析 )(代码片段