我的java学习日志day04
2019年7月2日
流程控制语句
三种语句结构:1、顺序结构;2、选择结构;3、循环结构;
1、顺序结构:java中绝大部分都是顺序结构(从上到下,从左往右)
实例:
class XX{public static void main(String[] args){
System.out.println("写个啥?");
System.out.println("不知道");
输出结果由上往下为:写个啥? 不知道
} }
2、选择结构: if语句、 switch语句、
if语句:一共有三种格式;
----------*–---------------*-
class XX{public static void main(String[] args){
//if语句格式
格式1 、if(判断条件){语句体}
执行流程:先去计算判断条件,如果结果为true
就执行语句体, if语句结束;如果结果为false,就跳过
if语句;也就是不执行;
int money = 10;
if(money>20){System.out,println("就是不买");}
System.out.println("不买");
}}
-------------––**-–----------*
if语句格式2、
class XX{public static void main(String[] args){
if语句格式2、
if(判断条件){语句体1}else{语句体2}
执行流程: 先进行判断,如果true,执行语句体1,否则执行
语句体2;
实例:求两个整数的最大值;
int a = 5; int b = 6;
if(a>b){System.out.println(a)}else{
System.out.println(b);}
求三个数字的最大值
int a = 5; int b = 6; int c = 7;
执行判断;
if(a>b){if(a>c){System.out.println(a);}else{
if(b>c){System.out,println(b)}else{
System.out.println(c);}}}}}
如果if语句格式二,返回的是值,就可以和三目等效转换;
—**--–-–---–--**-–------*-**-
if语句格式3、
class XX{publci static void main(String[] args){
if语句的三种格式:
if(判断条件){语句体3}else if
(判断条件2){语句体3}else if
(判断条件3){语句体3}…else if…无限else if
执行流程:先执行判断条件一,如果是true,则执行语句体1,
如果是false则执行判断条件2,如果是true则执行判断条件2
以此类推,如果期间有条件满足,则输出满足条件的判断结果
,然后执行其他语句;如果所有条件都为false则执行完毕;
执行其他语句;
}}
测试数据:1、正确数据;2、边界数据;3、错误数据;
--------–**–--**–----**-–--**-*-
switch语句:
注意:switch表达式支持 byte、short、char、int;
只支持4种基本类型;从jdk1.5开始支持枚举;
从jdk1.7开始支持String;
case的值是一个常量,且不能重复;
可以省略break,但是省略后,程序则在执行完毕无break的选项后,
继续执行后续选项;
switch语句格式:
switch(表达式){
case 值1:语句体1;break
case 值2:语句体2;break
case 值3:语句体3;break
.
.
.
以此类推
default:语句体;break;
}
执行流程:先计算表达式的值,根据表达式的值和case的值
一一比较,如果有相等的case值就执行相应case下的语句体,
再执行break; 如果输入的值没有相等的,则转到default,
执行default的语句体;
实例
impotr java.util.*;
class XX {class static void mian(String[] args){
Scanner s = new Scanner(System.in);
int a = s.nextInt();
switch(a){
case 1 =:System.out.println(aa);
case 2 =:System.out.println(bb);
.
.
.
.
defalt:System.out.println(cc);
}}
小作业:输入季节,输出相应的月份。
import java.util.*;
class QQQ {public static void main(String[] args){
Scanner s = new Scannner(System.in);
String a = s.nextLine();
switch(a){case"春天":System.out.println("三月");
case"春天1":System.out.println("四月");
case"春天3":System.out.println("五月");break;
case"夏天":System.out.println("六月");
case"夏天1":System.out.println("七月");
case"夏天2":System.out.println("八月");break;
case "秋天":System.out.println("九月");
case"秋天2":System.out.println("十月");
case"秋天3": System.out.println("十一月");break;
case"冬天":System.out.println("十二月");
case"冬天2":System.out.println("一月");
case"冬天3":System.out.println("二月"); break;
default:System.out.println("请输入正确的月份");
} }}
default可以放在括号内任意位置,也可省略。
-----------------------********------******--------
循环结构
for 循环、while循环、do…while循环
for循环格式:
for(初始值;判断条件;控制条件){循环体;}
执行流程:先拿到初始值、判断条件;然后进行判断,
如果结果为false就结束for
循环,如果为true就执行循环体,执行控制条件改变初始值,
拿着改变的初始值和判断条件,则继续进行判断如果是false就
结束循环,如果是true就执行循环体,执行控制条件改变初始值,
重复上述操作,以此类推;
public class XX{public static void main(String[] args){
for(int a = 0;a<10;a++){
System.out.println(“HelloWord”);
}
}}
-–----------------------------*
实例:
public class AA{public static void main(String[] args){
//输出数据10-1;
for(int a = 10; a>=1;a--){System.out.println(a);}
//输出1-10的和
int a = 0;
for(int b = 1;b<=10;b++){
a+=b;也可以写为a= a+b;
System.out.println(a);
//求1-100之间的奇数之和
//求和变量
int a = 0;
for(int b = 1;b<=100;b++){
if((i&1!)=0)或者(i%2!=0){a+=b;
System.out.println(a);
第二种方法
int sum = 0;
for(int a = 1;a<=100;a+=2){sum += a;
System.out.println(sum);}
–---------------------------------------------------–
//输出所有的水仙花数
//abc=a*a*a+b*b*b+c*c*c
c=abc%; b=(abc/10)%10; c=abc/100;
int c = 0;(统计数值)
for(int i = 100;i<1000;i++){
//各位
int ge = i%10;
int shi = (i/10)%10;
int bai = i/100;
//根据条件进行判断
if(i == ge*ge*ge+shi*shi*shi+bai*bai*bai){
System.out.println(i);
c++
System.out.println("一共"+c+"个水仙花数");
}
}
}
}}
}}
------–**–---------------------**–*
while循环
格式 while(判断条件){循环体}
while的一般格式:
初始值(判断条件){循环体;控制条件}
循环流程与for循环相同;
-------------------------------------------------
do while循环
格式
初始值
do{循环体;控制条件;}while(判断条件)
执行流程: 先获取初始值,执行循环体,执行控制条件改变初始值
拿着改变的初始值和判断条件进行比较,如果是false就结束循环,
如果是true就执行循环,以此类推;
class XXXXX{public static void main(String[] args){
int i = 0;
do{打印XXX;i++}while(i<10);
}}
–----**–--------------------------------*––*
三种循环的区别与联系
三种循环可以等价转换
三种循环的使用优先级;
首先 for 其次while 再者 do while
循环内的变量只能在循环内使用;
–-—–-*--–––**–---------**–*-
利用循环打印
* * * *
* * * *
* * * *
* * * *
* * * *
//打印一颗 *
System.out.print("*");
for(int i = 0;i<5;i++ ){
//打印一行 *
System.out.print("*"); }
//换行
System.out.println();
再打印一行;
for(int i = 0;i<5;i++ ){
//打印一行 *
System.out.print("*"); }
将上述模块循环,嵌入一个新的for循环
for(int a = 0;a<5;a++)//控制列数
{for(int i =0;i<5;i++ )//控制行数{
System.out.print("*");
} System.out.println();}
打印99乘法表
列数乘以行数
for(i=1;i<=9;i++){for(int a = 1;a<=i;a++){
System.out.println(i+"x"+a+"="i*a+'t');
}
System.out.println();
}
--–**------------**************---*––-----
跳转控制语句
break; continue; return(放在以后方法中讲);
class DDD{public static void main(String[] args){
waiceng: for(int a = 1;a<=4;i++){
neiceng: for(int b = 1; b<=5;b++){
if(b==2)break;//中断当前循环
continue;//跳过当前循环
break waiceng;(在内循环中结束外层的标号)
System.out.print("*"); }
}
System.out.println();
}}
一个代码块可以采取标号的形式;
---------–---–--------–--*-
break 在switch中作为结束语句使用,在循环中作为结束当前循环使用;
continue 在循环中使用,用于跳过此次循环;
return;(以后在方法中讲解)