一、判断结构
if语句 三种格式:
- if(条件表达式) //条件表达式为true或false
{
执行语句;//只有条件表达式为true,才执行大括号里面的语句
}
int x = 1;
if(x==1)
{
System.out.println("yes");
}
- if(条件表达式)
{
执行语句;
}
else
{
执行语句;
}
int x = 3;
if(x>3)
{
System.out.println("yes");
}
else
{
System.out.println("NO");
}
if else结果简写格式:变量 = (条件表达式)?表达式1:表达式2
三元运算符:
优点:可以简化if else代码
弊端:因为是运算符,所以运算完必须要有一个结果
int a = 9,b;
//b = (a>1)?System.out.println("ABC"):200;//不可以写成这样(无返回值,只是直接打印ABC,但if else就可以直接写输出语句)
b = (a>1)?100:200;//正确写法
3.只要有一个满足,程序就结束
if(条件表达式)
{
执行语句;
}
else if (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
int = 3;
if(x>1)//结果只输出a
{
System.out.println("a");
}
else if(x>2)
{
System.out.println("b");
}
else
{
System.out.println("c");
}
//需求:根据用户定义的需求不同,打印对应的星期英文
int x = 3;
if(x==1)
{
System.out.print("MONDAY");
}
else if(x==3)
{
System.out.print("Wednesday");
}
else
{
System.out.print("星期不存在");
}
/需求:根据输入的月份不同,显示春天、夏天、秋天、冬天。
思路:春季:3月-5月,夏季:6月-8月,秋季:9月-11月,冬季:12月-2月
int x =12;
if(x<1||x>12)
{
System.out.print("输入的季节不存在");
}
else if(x>=3 && x<=5)
{
System.out.print("春季");
}
else if(x>=6 && x<=8)
{
System.out.print("夏季");
}
else if(x>=9 && x<=11)
{
System.out.print("秋季");
}
else
{
System.out.print("冬季");
}
二、选择结构
表达式只取byte、short、int、char类型
只有当遇到{}或者break才停止执行
swich(表达式)
{
case 取值1:
执行语句:
break;
case 取值2:
执行语句:
break;
........
default:
执行语句:
break;
}
1.switch语句选择的类型只有四种:byte,short,int ,char。
2.case之间与default没有顺序。先执行第一个case,没有匹配的case执 行 default。
3.结束switch语句的两种情况:遇到break,执行到switch语句结束。
4.如果匹配的case或者default没有对应的break,那么程序会继续向下 执行,运行可以执行的语句,直到遇到 break或者switch结尾结束
int x = 1;
switch(x)
{
case 1:
System.out.println("a");
break;
case 2:
System.out.println("b");
break;
default:
System.out.println("不存在");
break;
}
需求:根据输入的月份不同,显示春天、夏天、秋天、冬天。
思路:春季:3月-5月,夏季:6月-8月,秋季:9月-11月,冬季:12月-2月
int x = 1;
switch(x)
{
case 3:
case 4:
case 5:
System.out.println(x+"春季");
break;
case 6:
case 7:
case 8:
System.out.println(x+"夏季");
break;
case 9:
case 10:
case 11
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println(x+"冬季");
break;
default:
System.out.println(x+"不存在月份");
break;
}
if和switch很像:具体什么场景下,应用哪个语句呢?
如果判断的具体数据值不多,而符合byte short int char四种类型。
虽然两个语句都可以使用,建议使用switch,因为效率稍微高一些。
其他情况对区间进行判断,结果为boolean类型判断,使用if,if的使用范围更广。
三、循环结构
3.1 while循环
while(表达式)
{
循环体(执行语句);
}
//输出1-10所有寄数
int x = 1;
while(x<10)
{
System.out.println("x="+x);
x+=2;//把左右两边加起来的和赋值给左边
}
3.2 do while循环
do while语句格式:
do
{
执行语句;
}while(条件表达式);
int x = 1;
do
{
System.out.println("x="+x);
x++;
}while(x<3);
while与do while区别:
while:先判断条件,只有条件满足才执行循环体
do while:先执行循环体,再判断条件,条件满足,再继续执行循环体
do while:条件无论是否满足, 循环体至少被执行一次
3.3 for循环
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;
}
for(int x = 0;x<3;x++)
{
System.out.println("x="+x);
}
int x = 1;
for(System.out.println("a");x<3;System.out.println("c"))
{
System.out.println("d");
x++;
}
//输出结果:adcdc,所以不是所有for的初始化都要是int x = 0;
for与while区别
1,for里面的两个表达式运行的顺序,初始化表达式只读一次,判断循环条件, 为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件, 重复找个过程,直到条件不满足为止。
2,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是 在内存中释放。而 while循环使用的变量在循环结束后还可以继续使用。
3,最简单无限循环格式:while(true) , for(;;){}无限循环存在的原因是并不知道循 环多少次,而是根据某些条件,来控制循环。
练习1.获取1~10的和,并打印
//循环注意:一定要明确那些语句需要参与循环,那些不需要
/*
0+1
1+2
3+3
6+4
*/
int sum = 0;//定义变量用处存储不断变化的和,int x = 1;定义变量用于被加的数
for(int x = 1;x<10;x++)
{
sum+=x;
}
System.out.println("sum="+sum);
其实这就是累加思想。
原理:通过变量记录住循环操作后的结果,通过循环的形式,进行累加动作。
练习2:计算1-100,7的倍数个数
思路:1.先对1~100进行循环
2.再循环的过程中,定义条件,只对7的倍数进行操作
3.因为7的倍数不确定,只要符合条件,就通过一个变量记录这个变化的次数
步骤:1.定义循环语句,选择for语句
2.再循环中定义判断,只要是7的备注即可。使用if语句,条件:7的倍数 x%7==0;
3.定义变量,该变量随着7的倍数的出现而自增
int count = 0;
for(int x = 1;x<100;x++)
{
if(x%7==0)
{
count++;
}
}
System.out.println("count="+count);
计数器思想:通过一个变量记录住数据的状态。也需要通过循环完成
练习3:ForFor嵌套循环
/*输出:
***
**
*
*/
for(int x = 0;x<5;x++)//控制行数
{
for(int y = x;y<3;y++)//控制列数
{
System.out.print("*");
}
System.out.println();
}
/*
*
**
***
*/
for(int x = 0;x<3;x++)
{
for(int y =0;y<=x;y++)
{
System.out.print("*");
}
System.out.println();
}
规律:当的尖朝上,可以改变条件。让条件随着外循环变化。
当的尖朝下,可以改变初始化值,让初始化随着外循环变化。
写99乘法表
for (int x = 1;x<10;x++ )
{
for(int y = 1;y<=x;y++)
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}