三元运算符是一个运算符必须有结果 格式(条件表达式)?表达式1:表达式2;条件为true运行1,false为2.
int x=1,y;
y=(x>1)?100:200; y=200.
程序流程控制:判断结构 if语句 三种表达式 1.if(条件表达式)
{
执行语句;
}
2.if(条件表达式)
{
执行语句;
}
else
{
执行语句
}
3.if(条件表达式)
{
执行语句;
}
else if(条件表达式)
{
执行语句;
}
……
{
执行语句;
}
class IfTest
{public static void main(String[]args)
{
//需求1:根据用户定义的数值不同,打印对应的星期。
int num=1;
if(num==1)
System.out.println("monday");
else if(num==2)
System.out.println("tusday");
}
}
//需求2;根据用户指定月份打印该月季节
int x=4;
if(x==3||x==4||x==5)
System.out.println(x+"春季")
else if(x==6||x==7||x==8)
System.out.println(x+"夏季")
方法2
if(x>12||x<1)
System.out.println(x+"不存在")
if(x>=3&&x<=5)
System.out.println(x+"春季")
选择结构 :switch语句 特点
格式
switch(表达式)//byte short int char只包含这四种类型的数
{
case取值1:
执行语句;
break;
case取值2:
执行语句;
break;
...
default:
执行语句
break;//表示结束 可以省略 没有则运行到}处
}
例:int a=4,b=2;
char ch='+';
switch(ch)
{
case '-':
System.out.println(a-b);
//break;这样的话会把能执行的都执行完才结束
case '+';
System.out.println(a+b);
//break;
case'*';
System.out.println(a*b);
break;
case '/';
System.out.println(a/b);
break;
default://可以改变顺序 先执行上面的case语句 结束有两种一种到break一种到}
System.out.println("nono")
可以这样执行结果一样的case
case 4
case 5
case 3
System.out.println(x+"夏季")
}
/*if和switch语句很像。
具体使用哪个 如果判断的数值不多 而且符合byte short int char四种类型
虽然两个语句都可以使用,建议使用swith,因为效率稍高
其他情况:对区间判断,对结果为boolean类型判断,使用if她的范围广些
*/
循环结构/*循环结构:while格式:
while(条件表达式)
{
执行语句;
}
do
{
执行语句;
}
while (条件表达式);//do while特点 条件是否满足循环体至少被执行一次
for格式
for(初始化表达式;(合理的出事表达式即可)循环条件表达式;循环后的操作表达式)多表达式用逗号隔开
{
执行语句;
}
*/
class ThreeDay
{
public static void main(String[] args)
{
int x=1;
while(x<3)//后面加分号的话就运行不下去了
{
System.out.println("x="+x);//循环语句
x++;//此时x++和++x一样
}
}
//do while实例:
do
{
System.out.println("do:x="+x);//第一步
x++;
}
while (x<3);//执行完上面的一次后才执行while
//for循环实例:
for(int x = 0;x<3 ; x++)//定义的int x只在大括号范围内有效
{
System.out.println("x="+x);
}
上面的用while法表示
int x=0;
while(x<3)
{
System.out.println("x="+x);
x++;
}
1.变量有自己的作用域,对for来说 如果控制循环的增量定义在for语句中
那么该变量只在for语句中有效。for语句执行完毕,变量在内存中释放出来
2.for和while可以进行互换,如果只是定义循环增量用for语句更适合
总结:
什么好时候使用循环结构?
当对某些语句执行很多次时,就是循环结构。
/*无限循环的最简单表现形式。
for(;;){}
while(true){}
练习1获取1~10的和,并打印*/
//while语句写法:
//一、定义变量用于存储不断变化的和。
int sum = 0;
//二、定义变量,记录著不断变化的被加的数。
int x = 1;
//三、定义循环,重复加法的过程。
while(x<=10)
{
sum =sum+x;
x++;
}
System.out.println("sum="+sum);
//for语句写法:
int sum = 0;
for(int x = 1;x <= 10;x++)
{
sum +=x;
}
System.out.println("sum="+sum);
//练习2、1~100之间7的倍数的个数并打印。
思路:
操作步骤:
int sum = 0;
for(int x = 2;x <= 100; x++)
{
if(x%7==0)
sum++;
}
System.out.println("sum="+sum);
//累加思想 原理:通过变量记录住操作的结果。
//记数器思想 原理:通过一个变量记录住数据的状态变化,也是通过循环完成。
//语句嵌套形式,就是语句中还有语句。
//循环嵌套:
for(int x=0;x<3;x++)
{
for(int y=0;y<4;y++)//循环完成后才会回到上一个循环
{
System.out.println("ok");//会打印12个ok
}
}
/*练习打印下列图形
*****
****
***
**
*
发现图形有很多行,每一行有很多列
使用嵌套循环解题
*/
int z=0;
for (int x=0;x<5 ;x++ )//因为外循环决定行数 共五行所以x<5
{
for (int y=z;y<5 ;y++ )//要使每行的元素数减少 故定义一个变量来执行
{
System.out.print("*");
}
System.out.println();
z++;
}
简化版://因为y的值随x的值变化
for (int x=0;x<5 ;x++ )//因为外循环决定行数 共五行所以x<5
{
for (int y=x;y<5 ;y++ )//要使每行的元素数减少 故定义一个变量来执行
{
System.out.print("*");
}
System.out.println();
}
/*练习打印下列图形
*
**
***
****
*****
*/
for (int x=0;x<5 ;x++ )//因为外循环决定行数 共五行所以x<5
{
for (int y=4-x;y<5 ;y++ )//要使每行的元素数增多 故定义一个变量来执行 观察x,y的关系
{
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
*/
for (int x=1;x<=9 ;x++ )//因为外循环决定行数 共五行所以x<5
{
for (int y=1;y<=x ;y++ )//要使每行的元素数减少 故定义一个变量来执行
{
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
//规律 尖朝上可以改变条件让条件随着外循环变化,尖朝下可以改变初始化值让初始化值随外循环变化
break(跳出)应用范围:switch/循环语句 能够结束循环结构
w:for (int x=0;x<3 ;x++ )
{
for (int y=0;y<4 ;y++ )
{
System.out.println("x="+x);
break w;//此时break结束的是外循环
}
}
continue(继续)只能作用于循环结构
for (int x=o;x<10 ;x++ )
{
if (x%2==1)
continue;//结束本次循环 进行下次循环 上方条件满足不执行continue下的语句
System.out.println("x="+x)
}
/*
记住:1.break和continue语句的作用范围
2.break和continue单独存在时,下面的任何语句都将执行不到
练习:打印
*
* *
* * *
* * * *
* * * * *
*/
for (int x=0;x<5 ;x++ )
{
for (int y=x+1;y<5 ;y++ )
System.out.print(" ");
{
for (int z=0;z<x ;z++ )
{
System.out.print("* ");
}
System.out.println();
}
}