目录
3.1程序结构
顺序结构.选择结构和循环结构是结构化程序设计的3种基本结构是各种复杂程序的基本构造单元
顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
分支结构 (if, switch)
循环结构 (for, while, do…while)
3.2 条件语句
if条件语句
if语句是判断句其后面的表达式要么为true要么为false。
如果if后面的布尔表达式为true那么执行其后的语句,如果为false则不执行后面的语句
1.格式:
if ( 关系表达式 ) {
语句体 ;
}
2.格式:
if ( 关系表达式 ) {
语句体 1 ;
} else {
语句体 2 ;
}
3. 格式:
if ( 关系表达式 1 ) {
语句体 1 ;
} else if ( 关系表达式 2 ) {
语句体 2 ;
}
…
else {
语句体 n + 1 ;
}
public class test2 {
public static void main(String[]args){
if(true)//让判断条件永远为真
System.out.println("我没有使用大括号");//没有大括号,直接跟在if语句之后
if(true)//让判断条件永远为真
System.out.println("我使用大括号");//输出语句大括号之内
}
}
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("英语没有及格");//条件不成立输出的信息
}
}
}
}
switch多分支语句
格式:
switch ( 表达式 ) {
case 1 :
语句体 1 ;
break ;
case 2 :
语句体 2 ;
break ;
...
default :
语句体 n + 1 ;
break ;
}
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");//不是闰年
}
}
import java.util.Scanner;
public class test7 {
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&&iYear%100!=0||iYear%400==0)//如果iYear可以被4整除并且不能被100整除,或者iYear可以被400整除
System.out.println("It is a leap year");//是闰年
else
System.out.println("It is not a leap year");//不是闰年
}
}
执行流程:
首先计算出表达式的值
其次,和 case 依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到 break 就会结
束。
最后,如果所有的 case 都和表达式的值不匹配,就会执行 default 语句体部分,然后程序结束掉。
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");//输出信息
}
}
}
public static void main ( String [] args ){
Scanner sc = new Scanner ( System . in );
System . out . println ( " 请输入星期数 :" );
int week = sc . nextInt ();
switch ( week ){
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
System . out . println ( " 工作日 " );
break ;
case 6 :
case 7 :
System . out . println ( " 休息日 " );
break ;
default :
System . out . println ( " 您的输入有误 " );
break ;
}
}
}
3.3循环语句
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("以上条件都不是。");//输出信息
}
}
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输出
}
}
do...while循环语句
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);//输出
}
}
while与do...whlie比较
可以通过设置起始循环条件不成立的循环语句来比较观察while与do...while的不同,而用表达式变量设置i<1,明显循环条件不成立;
for循环语句
for(条件表达式1;条件表达式2;条件表达式3) {
语句块;
}
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);//输出
}
}
表达式 | 形式 | 功能 | 举例 |
---|---|---|---|
条件表达式 1 | 赋值语句 | 循环结构的初始部分,为循环变量赋初值 | int i=1 |
条件表达式 2 | 条件语句 | 循环结构的循环条件 | i>40 |
条件表达式 3 | 迭代语句,通常使用 ++ 或 -- 运算符 | 循环结构的迭代部分,通常用来修改循环 变量的值 | i++ |
for 循环和 while、do while 循环不一样:由于 while、do while 循环的循环迭代语句紧跟着循环体,因此如果循环体不能完全执行,如使用 continue 语句来结束本次循环,则循环迭代语句不会被执行。但 for 循环的循环迭代语句并没有与循环体放在一起,因此不管是否使用 continue 语句来结束本次循环,循环迭代语句一样会获得执行。
foreach语句
for(类型 变量名:集合) {
语句块;
}
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的值
}
}
}
其中,“类型”为集合元素的类型,“变量名”表示集合中的每一个元素,“集合”是被遍历的集合对象或数组。每执行一次循环语句,循环变量就读取集合中的一个元素
1. // 声明并初始化数组
2. int[] numbers = { 43, 32, 53, 54, 75, 7, 10 };
3. System.out.println("----for----");
4. // for语句
5. for (int i = 0; i < numbers.length; i++) {
6. System.out.println("Count is:" + numbers[i]);
7. }
需首先初始化数组来表示。
循环语句的嵌套
循环有for.while.do.....while三种方式,三种循环可以互相嵌套列。
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();//输出信息
}
}
}
3.4 跳转语句
break语句
使用break语句直接强行退出循环(break不带标签)
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);//输出内容
}
}
}
}
continue语句
continue语句则是针对break语句的补充,不是立即跳出循环体语句而且跳过本次循环结束前的语句,回到循环的条件测试部分,重新开始执行循环。continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。
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);//输出
}
}
}
}
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的值
}
}
}
跳转控制语句(break)
跳出循环,结束循环
跳转控制语句(continue)
跳过本次循环,继续下次循环
注意: continue只能在循环中进行使用