- 程序结构:顺序结构、选择结构、循环结构
- 条件语句:if条件语句、if.....else语句、if...else if多分支语、switch多分支语句
简单的if条件语句 语法如下:
if(布尔表达式){
语句;
}
4.布尔表达式:必要参数,它最后返回的结果必须是一个布尔值。它可以是一个单纯的布尔变量或常量,也可以是关系表达式
public class test2 {
public static void main(String[]args){
if(true)//让判断条件永远为真
System.out.println("我没有使用大括号");//没有大括号,直接跟在if语句之后
if(true)//让判断条件永远为真
System.out.println("我使用大括号");//输出语句大括号之内
}
}
运行结果:
import java.util.Scanner;
public class test3 {
public static void main(String[]args){
Scanner in=new Scanner (System.in);//创建Scanner对象,用于进行输入
System.out.println("请输入要拨打的电话号码:");//输出
int phoneNumber=in.nextInt();//创建变量,保存电话号码
if(phoneNumber!=84972266)//判断此电话号码是否是84972266,如果不是84972266号码,则提示号码不存在
System.out.println("对不起,您拨打的号码不存在!");//输出
}
}
运行结果:
5.if.....else语句:通常表现为“如果满足某种条件,就执行某种处理,否则就执行另一种处理 语法如下
if(布尔表达式){
语句1;
}else{
语句2;
}
注意else不能单独使用,必须和关键字if一起出现。
public class test4 {
public static void main(String[]args){
int math=95;//声明int型局部变量,并赋给初值95
int english=56;//声明int型局部变量,并赋给初值56
if(math>60){//使用if语句判断math是否大于60
System.out.println("数学及格了");//条件成立时输出的信息
}
else{
System.out.println("数学没有及格");//条件不成立输出的信息
}
if(english>60){//判断英语成绩是否大于60
System.out.println("英语及格了");//条件成立输出的信息
}
else{
System.out.println("英语没有及格");//条件不成立输出的信息
}
}
}
运行结果:
6.if....else if多分支语句,语法:
if(表达式1){
语句1;
}
else if(表达式2){
语句2;
}
...
else if(表达式n){
语句n
}
表达式1~表达式n:必要参数。可以由多个表达式组成,但最后返回的结果一定要为boolean类型。
public class test5 {
public static void main(String[] args) {
int x=20;//声明int型局部变量
if(x>30){//判断变量x是否大于30
System.out.println("a的值大于30");//条件成立的输出信息
}else if(x>10){//判断变量x是否大于10
System.out.println("a的值大于10,但小于等于30");//条件成立的输出信息
}else if(x>0){//判断变量x是否大于0
System.out.println("a的值大于0,但小于等于10");//条件成立的输出信息
}else{//当以上条件都不成立时,执行的语句块
System.out.println("a的值小于等于0");//输出信息
}
}
}
运行结果:
if语句的嵌套:
if(表达式1)
{
if(表达式2)
语句1;
else
语句2;
}
if(表达式1)
{
if(表达式2)
语句1;
else
语句2;
}
else
{
if(表达式2)
语句1;
else
语句2;
}
条件语句可以有多种嵌套方式,可以根据具体需要进行设计,但一定要注意逻辑关系的正确处理。使用if语句嵌套时要注意else关键字要和if关键字成对出现,并且遵守临近原则,else关键字和自己最近的if语句构成一对。
import java.util.Scanner;
public class test6 {
public static void main(String[] args) {
int iYear;//创建整型变量,保存输入的年份
Scanner sc=new Scanner(System.in);//创建扫描器
System.out.println("please input number");//输出内容
iYear=sc.nextInt();//控制台输入一个数字
if(iYear%4==0){//如果能被4整除
if(iYear%100==0){//如果能被100整除
if(iYear%400==0)//如果能被400整除
System.out.println("It is a leap year");//是闰年
else
System.out.println("It is not a leap year");//不是闰年
}else
System.out.println("It is a leap year");//是闰年
}else
System.out.println("It is not a leap year");//不是闰年
}
}
运行结果:
7.switch多分支语句:switch语句中参数必须是整数、字符型、枚举类型、字符串类型。switch语句首先计算参数的值,如果参数的值和某个case后面的常量表达式相同,则执行该case语句后的若干个语句,直到遇到break语句为止。
public class test8 {
public static void main(String[] args) {
int week=2;//定义int型变量week
switch(week){//指定switch语句的表达式为变量week
case 1://定义case语句中的常量为1
System.out.println("Monday");//输出信息
break;//终止执行
case 2://定义case语句中的常量为2
System.out.println("Tuesday");//输出信息
break;//终止执行
case 3://定义case语句中的常量为3
System.out.println("Wednesday");//输出信息
break;//终止执行
case 4://定义case语句中的常量为4
System.out.println("Thursday");//输出信息
break;//终止执行
case 5://定义case语句中的常量为5
System.out.println("Friday");//输出信息
break;//终止执行
case 6://定义case语句中的常量为6
System.out.println("Saturday");//输出信息
break;//终止执行
case 7://定义case语句中的常量为7
System.out.println("sunday");//输出信息
break;//终止执行
default://default语句,如果week不是1~7之间的数字,则执行此行代码
System.out.println("Sorry, I don't Know");//输出信息
}
}
}
运行结果:
如果switch语句中没有break关键字,即使执行完对应的case的处理语句,switch语句也不会立即停止,而是会继续执行下面所有的case,直到遇到break关键字或者完成执行完所有代码才停止。
import java.util.Scanner;
public class test9 {
public static void main(String[]args){
Scanner sc=new Scanner(System.in);//输入数值
System.out.println("请输入成绩:");//输出
int grade=sc.nextInt();//将输入的值赋予给grade
switch(grade){//指定switch语句的表达式为变量grade
case 10://定义case语句中的常量为10
case 9:System.out.println("成绩为优");break;//定义case语句中的常量为9并输出内容
case 8:System.out.println("成绩为良");break;//定义case语句中的常量为8并输出内容
case 7://定义case语句中的常量为7
case 6:System.out.println("成绩为中");break;//定义case语句中的常量为6并输出内容
case 5://定义case语句中的常量为5
case 4://定义case语句中的常量为4
case 3://定义case语句中的常量为3
case 2://定义case语句中的常量为2
case 1://定义case语句中的常量为1
case 0:System.out.println("成绩为差");break;//定义case语句中的常量为0并输出内容
default:System.out.println("成绩无效");//default语句,如果grade不是0~10之间的数字,则执行此行代码
}
}
}
运行结果:
public class test10 {
public static void main(String[]args){
String str="明日科技";//定义一字符串并赋值
switch(str){//定义一个switch语句的表达式为str
case"明日"://定义case语句中的常量1
System.out.println("明日图书网www.mingribook.com");//输出信息
case"明日科技"://定义case语句中的常量2
System.out.println("吉林省明日科技有限公司");//输出信息
break;
default://default语句
System.out.println("以上条件都不是。");//输出信息
}
}
}
运行结果:
- 注意:同一个switch语句,case的常量值必须互不相同。在switch语句中,case语句后常量表达式的值可以为整数(除long 外),但绝不能是实数。
8.循环语句:while循环语句、do...whlie语句、for循环语句 、foreach语句、循环语句的嵌套。
9.while循环语句:
-
while(条件表达式) { 执行语句 }
while语句的循环方式为利用一个条件来控制是否要继续反复执行这个语句。
当条件表达式的返回值为真时,则执行”{}“中的语句,当执行完“{}”中的语句后,重新判断条件表达式的返回值,直到表达式返回的结果为假时,退出循环
public class test11 { public static void main(String[] args) { int x=1;//定义int型变量x,并赋给初值 int sum=0;//定义变量用于保存相加后的结果 while(x<=10){ sum=sum+x;//while循环语句,当变量满足条件表达式时执行循环体语句 x++; }System.out.println("sum="+sum);//将变量sum输出 } }
运行结果:
10.do....while循环语句 :先执行一次循环后,再判断条件是否成立。也就是说do...while循环语句中“{}”中的程序段至少要被执行一次。
语法如下:
do { 执行语句 } while(条件表达式);
public class test12 { public static void main(String[] args) { int a=100;//声明int型变量a并赋初值100 while(a==60){//指定进入循环体条件 System.out.println("ok1");//输出 a--;//自减运算 } int b=100;//定义一个int型变量b并赋初值100 do{ System.out.println("ok2");//输出 b--;//自减运算 }while(b==60);//循环条件 } }
运行结果:
11.while与do...while比较:while先判断再执行,而do...while是先执行一遍循环体语句再判断。
public class test13 { public static void main(String[] args) { int i=0,j=0;//定义两个int类型变量并赋初值 System.out.println("before do_while j="+j);//输出 do{ j++;//自加运算 }while(i>1);//循环条件 System.out.println("after do_while j="+j);//输出 } }
运行结果:
public class test14 { public static void main(String[] args) { int i=0,j=0;//定义两个变量 System.out.println("before while j="+j);//输出 while(i>1){//循环条件 j++;//自加运算 }System.out.println("after while j="+j);//输出 } }
运行结果:
12.for循环语句:语法如下:
-
for(表达式1;表达式2;表达式3){ 语句 }
- 先执行表达式1 。
- 判断表达式2,若其值为真,则执行for语句中指定的内嵌语句,然后执行3.。若为假,则结束循环,转到5.。
- 执行表达式3.
- 返回2.继续执行。
- 循环结束,执行for语句下面的一个语句。
public class test15 { public static void main(String[] args) { int sum=0;//定义一个变量存放相加的值 int i;//定义一个控制循环次数的变量 for(i=1;i<=100;i++){//for语句 sum+=i;//计算1~100 } System.out.println("the result:"+sum);//输出 } }
运行结果:
foreach语句 语法如下 :
for(循环变量x:遍历对象obj){ 引用了x的java语句; }
public class test16 { public static void main(String[] args) { int arr[]={7,10,1};//声明一维数组 System.out.println("一维数组中的元素分别为:");//输出信息 for(int x:arr){//foreach语句,int x引用的变量,arr指定要循环遍历的数组,最后将x输出 System.out.println(x);//输出x的值 } } }
运行结果:
13.循环语句的嵌套:
for(...) { for(...) { ... } }
while(...) { while(...) { .... } }
while(...) { for(...) { .... } }
public class test17 { public static void main(String[] args) { int i,j;//创建两个整数变量 for(i=1;i<10;i++){//输出9行 for(j=1;j<i+1;j++){//输出与行数相等的列 System.out.println(j+"*"+i+"="+i*j+"\t");//输出信息 } System.out.println();//输出信息 } } }
运行结果:
14.跳转语句
1.break语句
2.continue语句
15.break语句:使用break语句可以跳出switch结构。在循环中可以跳出当前循环体,从而中断当前循环。
public class test18 {
public static void main(String[] args) {
for(int i=1;i<20;i++){//for语句控制循环次数
if(i%2==0){//如果i是偶数
System.out.println(i);//输出i的值
break;//跳出下一次循环
}
}
System.out.println("---end---");//输出
}
}
运行结果:
public class test19 {
public static void main(String[] args) {
for(int i=0;i<3;i++){//外循环
for(int j=0;j<6;j++){//内循环
if(j==4){//如果j等于4的时候就结束内部循环
break;//跳出内循环
}
System.out.println("i="+i+"j="+j);//输出内容
}
}
}
}
运行结果:
如果想要让break跳出外层循环,java提供了标签的功能,语法如下:
标签名:循环体{
break标签名;
}
标签名:任意标识符。
循环体:任意循环语句
break标签名:break跳出指定的循环体,此循环的标签名必须与break的标签名一致。带有标签的break可以制定跳出外层循环,这个循环可以是内层循环,也可以是外层循环。
public class test20 {
public static void main(String[] args) {
Loop:for(int i=0;i<3;i++){//在for循环前用标签标记
for(int j=0;j<6;j++){//内循环
if(j==4){//如果j等于4的时候就结束外层循环
break Loop;//跳出Loop标签标记的循环体
}
System.out.println("i="+i+"j="+j);//输出
}
}
}
}
运行结果:
16.continue语句:continue不是立即跳出循环体,而是跳出本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。continue语句也可以使用标签。
public class test21 {
public static void main(String[] args) {
for(int i=1;i<20;i++){//控制循环次数
if(i%2!=0){//如果i不是偶数
continue;//跳出下一循环
}
System.out.println(i);//输出i的值
}
}
}
运行结果: