package com.huateng.mjq.chapter4;
/**
* java 流程控制:顺序结构、分支结构、循环结构
* 顺序结构不题;
* 分支结构中:if(){}
* if()else{}
* if()else if(){}else if(){}else {} 这个注意一点:需要把包含范围小的条件放在前面,而且各个分支最多执行一个。
* switch()case break;default break; 需要注意break的使用
*
* 循环结构:循环结构中包含:循环变量初始化,循环条件检测,执行循环体,循环变量修改,再次循环条件检测.....直到循环条件不满足时,循环执行结束或者
* 在执行循环体的过程中,使用return,break,continue等,这个下面后面还会讨论;
* for(;;){} 直到型循环,如果省略{},则for循环会将for(;;)后的第一条语句(以分号分隔)作为循环体;这个也同样适用与分支语句if和else if 、else
* for循环中,循环变量初始化,循环条件和循环变量迭代语句都不是必须的,但是分号必须存在,省略循环条件则表示true,死循环;初始化语句可以同时初始化多个相同类型(不限于int)的变量;
* while(){} 直到型循环;
* do{}while(); 当型循环,注意while()后的分号。
* 具体看例子
* @author Administrator
*
*/
public class ProceDureContr_1 {
public static void main(String [] args)
{
test3();
}
/*a:0.3,b:0.5
a:0.6,b:1.5*/
public static void test1()
{
for(double a = 0.3,b =0.5;a+b<3;a=a*2,b=b*3)
{
System.out.println("a:"+a+",b:"+b);
}
}
/*
0
1
2
3
4
5本次循环要退出了,但是i++还是会被执行
6
*/
public static void test2()
{
//由于for跟while,do while不同,它的变量迭代没有放在循环体中,所以在使用continue结束本次循环的执行后,循环变量仍然会进行迭代
int i;
for(i =0;i<7;i++)
{
if(i==5)
{
System.out.println(i+"本次循环要退出了,但是i++还是会被执行");
continue;
}
System.out.println(i);
}
}
/*I love you !*/
public static void test3()
{
int forever = 10;
//这个for()后面的分号,很致命
for(int i=0;i<forever;i++);
{
//i显示未定义
//System.out.println("第"+ i +"次,I love you !");
System.out.println("I love you !");
}
}
}
package com.huateng.mjq.chapter4;
/**
* break:结束break所在的循环执行,继续执行外层循环(如果是循环嵌套);
* continue:结束执行本次循环continue后的代码,继续下次循环
* 标签:标签是标识符后紧跟冒号,只有放在循环前使用;
* break 标签:结束break 标签 所在的循环的执行,跳转至标签所在的地方,继续向下执行
* continue 标签:
* @author Administrator
*
*/
public class ProceDureContr_2 {
public static void main(String [] args)
{
test6();
}
/*
i的值是:0
i的值是:1
i的值是:2
i的值是:3
i的值是:4
i的值是:5
*/
public static void test1()
{
for(int i =0;i<10;i++)
{
System.out.println("i的值是:"+i);
if(i == 5)
break;
}
}
/*
i的值是:0
i的值是:1
i的值是:2
i的值是:3
i的值是:4
i的值是:6
i的值是:7
i的值是:8
i的值是:9
*/
public static void test2()
{
for(int i =0;i<10;i++)
{
if(i == 5)
continue;
System.out.println("i的值是:"+i);
}
}
/*
循环外
外层循环: i的值为:0
内层循环,i的值为: 0,j的值为: 0
内层循环,i的值为: 0,j的值为: 1
内层循环,i的值为: 0,j的值为: 2
*/
public static void test3()
{
System.out.println("循环外");
outer:
//这里不允许有任何语句,因为标签放在循环前
//System.out.println("循环外");
for(int i =0;i<5;i++)
{
System.out.println("外层循环: i的值为:"+i);
for(int j =0;j<5;j++)
{
System.out.println("内层循环,i的值为: "+i+",j的值为: "+j);
if(j == 2)
//跳转至外层,外层循环也不会再执行
break outer;
}
}
}
/*
外层循环: i的值为:0
内层循环,i的值为: 0,j的值为: 0
内层循环,i的值为: 0,j的值为: 1
内层循环,i的值为: 0,j的值为: 2
外层循环: i的值为:1
内层循环,i的值为: 1,j的值为: 0
内层循环,i的值为: 1,j的值为: 1
内层循环,i的值为: 1,j的值为: 2
外层循环: i的值为:2
内层循环,i的值为: 2,j的值为: 0
内层循环,i的值为: 2,j的值为: 1
内层循环,i的值为: 2,j的值为: 2
外层循环: i的值为:3
内层循环,i的值为: 3,j的值为: 0
内层循环,i的值为: 3,j的值为: 1
内层循环,i的值为: 3,j的值为: 2
外层循环: i的值为:4
内层循环,i的值为: 4,j的值为: 0
内层循环,i的值为: 4,j的值为: 1
内层循环,i的值为: 4,j的值为: 2
*/
public static void test4()
{
for(int i =0;i<5;i++)
{
System.out.println("外层循环: i的值为:"+i);
inner:
for(int j =0;j<5;j++)
{
System.out.println("内层循环,i的值为: "+i+",j的值为: "+j);
if(j == 2)
//结束内层循环,后续j = 3,4,都不会执行
break inner;
}
}
}
/*
循环外
外层循环: i的值为:0
内层循环,i的值为: 0,j的值为: 0
内层循环,i的值为: 0,j的值为: 1
内层循环,i的值为: 0,j的值为: 2
外层循环: i的值为:1
内层循环,i的值为: 1,j的值为: 0
内层循环,i的值为: 1,j的值为: 1
内层循环,i的值为: 1,j的值为: 2
外层循环: i的值为:2
内层循环,i的值为: 2,j的值为: 0
内层循环,i的值为: 2,j的值为: 1
内层循环,i的值为: 2,j的值为: 2
外层循环: i的值为:3
内层循环,i的值为: 3,j的值为: 0
内层循环,i的值为: 3,j的值为: 1
内层循环,i的值为: 3,j的值为: 2
外层循环: i的值为:4
内层循环,i的值为: 4,j的值为: 0
内层循环,i的值为: 4,j的值为: 1
内层循环,i的值为: 4,j的值为: 2
*/
public static void test5()
{
System.out.println("循环外");
outer:
//这里不允许有任何语句,因为标签放在循环前
//System.out.println("循环外");
for(int i =0;i<5;i++)
{
System.out.println("外层循环: i的值为:"+i);
for(int j =0;j<5;j++)
{
System.out.println("内层循环,i的值为: "+i+",j的值为: "+j);
if(j == 2)
//跳转至外层,内层循环j =3,4不会执行
continue outer;
}
}
}
/*
外层循环: i的值为:0
内层循环,i的值为: 0,j的值为: 0
内层循环,i的值为: 0,j的值为: 1
内层循环,i的值为: 0,j的值为: 3
内层循环,i的值为: 0,j的值为: 4
外层循环: i的值为:1
内层循环,i的值为: 1,j的值为: 0
内层循环,i的值为: 1,j的值为: 1
内层循环,i的值为: 1,j的值为: 3
内层循环,i的值为: 1,j的值为: 4
外层循环: i的值为:2
内层循环,i的值为: 2,j的值为: 0
内层循环,i的值为: 2,j的值为: 1
内层循环,i的值为: 2,j的值为: 3
内层循环,i的值为: 2,j的值为: 4
外层循环: i的值为:3
内层循环,i的值为: 3,j的值为: 0
内层循环,i的值为: 3,j的值为: 1
内层循环,i的值为: 3,j的值为: 3
内层循环,i的值为: 3,j的值为: 4
外层循环: i的值为:4
内层循环,i的值为: 4,j的值为: 0
内层循环,i的值为: 4,j的值为: 1
内层循环,i的值为: 4,j的值为: 3
内层循环,i的值为: 4,j的值为: 4
*/
public static void test6()
{
for(int i =0;i<5;i++)
{
System.out.println("外层循环: i的值为:"+i);
inner:
for(int j =0;j<5;j++)
{
if(j == 2)
//j=2不会打印出下面的信息来
continue inner;
System.out.println("内层循环,i的值为: "+i+",j的值为: "+j);
}
}
}
}