1、switch case 结构
2、while 循环
3、do while 循环
4、for 循环
5、break continue
1、switch case 结构
//例一
int x =3;
switch(x)
{
case 1:
System.out.println("输入的是1");
break;
case 2:
System.out.println("输入的是2");
break;
case 3:
System.out.println("输入的是3");
break;
default:
System.out.println("输入的不是1 2 3中间的一个");
}
//例二 本例只有在jdk7或7以上才有效
String name="晋三";
switch(name)
{
case "三":
System.out.println("1");
case "平":
System.out.println("2");
case "马":
System.out.println("3");
}
注意
1) 变量的类型只有4种, byte , short,int ,char , 在jdk7以后,可以用String类型,但 6 不行
2) default 可以放在任意位置
3) 如果没有break,程序将往下顺次执行
4) 如果中间有多条语句,可以用花括号括起来,也可以不括
//例三 输入一个月分,打印属于哪个季度,要求用switch case 做
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个月份");
int month=scan.nextInt();
switch(month)
{
case 1:
case 2:
case 3:
System.out.println("一季度");
break;
case 4:
case 5:
case 6:
System.out.println("二季度");
break;
case 7:
case 8:
case 9:
System.out.println("三季度");
break;
case 10:
case 11:
case 12:
System.out.println("四季度");
break;
default:
System.out.println("别开玩笑");
}
}
2、while 循环
==格式
while(条件表达式) //千万注意,这里没有 ;
{
执行语句
}
//例一 打印10排 =====================
int x=0;
while(x<10);
{
System.out.println("==================");
x=x+1;
}
//例二 打印 1 到 12 月
int month=1;
while(month<=12)
{
System.out.println(month +"月");
month++;
}
//例三 输入一个数字,如果不是 8888 ,则输出该数字,并继续输入,如果是8888,则停止程序
Scanner scan=new Scanner(System.in);
int num=scan.nextInt();
while(num!=8888)
{
System.out.println("输入的数字是"+num);
num=scan.nextInt(); //让用户继续输入
}
System.out.println("ok");
3、do while 循环
//和while有什么区别 do while,先执行,后判断 (先毒打,再审问)
== 格式
do
{
执行语句
}
while(条件表达式); //注意,要有这个分号
//例一
int x=0;
do
{
System.out.println("===========================");
x++;
}
while(x<10);
//例二 输入一个数字,把它打印出来,直到输入的数字是8888 的时候才结束程序
canner scan=new Scanner(System.in);
int x=0;
do{
x=scan.nextInt();
System.out.println(x);
}
while(x!=8888);
System.out.println("---ok-----");
//例三 随机生成 10个整数,把它们中间最大的取出来
public static void main(String[] args) {
// System.out.println(Math.random()); //Math.random() 生成的是1-0之间的一个小数 ,该值大于等于 0.0 且小于 1.0。
// System.out.println((int)(Math.random()*10)); //生成一个9-0之间的整 数
int max=0; //用来装最大的数
int i=0 ;
do{
int num=(int)(Math.random()*10);
System.out.println(num);
if(i==0)
{ //如果是第一次
max=num;
}
else{
if(max< num)
{
max=num;
}
}
i++;
}
while(i<10);
System.out.println("-------------------------");
System.out.println("最大的数是"+max);
}
4、for 循环
==格式
for(初始化表达式; 循环条件表达式; 循环后的操作表达式)
{
执行语句
}
//例一 打印 0 -100
for(int i=0; i<=100; i++ )
{
System.out.println(i);
}
注意两点
== 初始化表达式只执行一次
== 上例的i是个局部变量,只对for循环内有效
//例二
for(System.out.println("初始化的语句"); System.out.println("判断的语句"); System.out.println("循环后执行的语句") )
{
System.out.println("执行语句");
}
能编译通过吗? 不能,因为 System.out.println("判断的语句")不是条件语句
//例三 下面程序执行结果
int x=1;
for(System.out.println("初始化的语句");x<3; System.out.println("循环后执行的语句") )
{
System.out.println("执行语句");
x++;
}
初始化的语句
执行语句
循环后执行的语句
执行语句
循环后执行的语句
//例四 无限循环
for(;; ){
System.out.println("---");
}
System.out.println("0000"); //Unreachable code 不可达的代码
如果用while 可以这样写
while(true)
{
....
}
//例五 1+2+3+4 ... +100
int s=0; //存储最后的和
for (int i = 0; i <=100; i++)
{
s=s+i;
}
System.out.println("和是" +s); //5050
//例六 求 1-10000 之间的所有的能被99整除的数的个数
int count=0;
for(int i=0;i<10000;i++)
{
if(i%99==0)
{
count++;
System.out.println(i);
}
}
System.out.println("一共有" +count +"个"); //102 个
//例七 用嵌套循环打印
//i代表行 , j 代表列
for(int i=0;i< 10;i++)
{
for(int j=0;j<5;j++)
{
System.out.print("#");
}
System.out.println(); //打印换行
}
#####
#####
#####
#####
#####
#####
#####
#####
#####
#####
练习 打印如下图形
##########
#########
########
#######
######
#####
####
###
##
#
练习 打印九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
5、break continue
break 用于循环语句或 switch case 语句中,表示中断循环或结束switch case中的case
continue 用于循环结构
//例一 把s 从0开始到1000之间开邕累加 ,和大于3000 结束,输出这时s 累加了多少次
int s=0;
for (int i = 0; i <1000; i++)
{
s=s+i;
if(s>3000){
System.out.println("当前程序累加了" +i +"次"+"当前累加的值是 "+s);
break;
}
}
//例二 一共有5 个人,每个人分 10 块糖,但就是看第三个人不顺眼,不给他分
for(int i=1;i<=5;i++)
{
for (int j = 0; j <10; j++)
{
if(i==3){
break; //在多层循环中,结束的是离的最近的一层
}
System.out.println("第"+i+"个人分到第" +j+"块糖");
}
}
//例四 看第三个人超级不顺眼,如果碰上他,后面的糖全不分了
1) break 写在外层
2) 使用标号
AAA:for(int i=1;i<=5;i++)
{
BBB:for (int j = 0; j <10; j++)
{
if(i==3){
break AAA; //程序直接把AAA标示的循环结束了
}
System.out.println("第"+i+"个人分到第" +j+"块糖");
}
}
//例一 continue 取 0-100 之间所有的5的倍数,打印出来
for(int i=1;i<100;i++)
{
if(i%5 !=0)
{
continue; //无条件结束当前这次循环,继续一下次循环
}
System.out.println(i);
}