从结构化程序设计角度出发,程序有三种结构:
顺序结构:
JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序流程图中的体现就是用流程线将程序框自上而地连接起来,按顺序执行算法步骤。
选择结构:
if(条件表达式){
语句;
}
意义:if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句
条件表达式必须是布尔表达式
示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.Scanner; 2 public class TestIf{ 3 public static void main(String[] args){ 4 /* 5 0~18:你还是小屁孩! 6 18~30:你是精力旺盛小青年! 7 30~50:你是处在人生顶峰的老男人! 8 大于50:你已经人老珠黄了! 9 */ 10 Scanner sc = new Scanner(System.in); 11 System.out.println("请输入你的年龄:"); 12 int age = sc.nextInt(); 13 if(age>0 && age<=18){ 14 System.out.println("你还是小屁孩"); 15 } 16 if(age>18 && age<=30){ 17 System.out.println("你是精力旺盛小青年"); 18 } 19 if(age>30 && age<=50){ 20 System.out.println("你是出于人生巅峰的老男人"); 21 } 22 if(age>50){ 23 System.out.println("你已经日落西山了"); 24 } 25 } 26 }
if-else双选择结构:如果条件为true执行一个操作,为false执行另一个操作:
流程图:
示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class IfElse{ 2 public static void main(String[] args){ 3 double r = Math.random()*6; 4 double s = Math.PI*r*r; 5 double c = 2*Math.PI*r; 6 System.out.println("半径为:" + r); 7 System.out.println("面积为:" + s); 8 System.out.println("周长为:" + c); 9 if(s>=c){ 10 System.out.println("圆的面积大于周长"); 11 }else { 12 System.out.println("圆的周长大于面积"); 13 } 14 } 15 }
If-elseif-else多选择结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}………
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
逐条对if语句进行判断,条件匹配,进入语句体不再进行判断,否则对if语句继续判断匹配
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class TestIfElse3{ 2 public static void main(String[] args){ 3 int age = (int)(Math.random()*100); 4 System.out.println("您的年龄是:" + age + ",属于:"); 5 if(age<15){ 6 System.out.println("儿童"); 7 }else if(age<35){ 8 System.out.println("青年"); 9 }else if(age<50){ 10 System.out.println("壮年"); 11 }else if(age<85){ 12 System.out.println("老年"); 13 }else { 14 System.out.println("老寿星"); 15 } 16 } 17 }
switch多选择结构
根据表达式值的不同执行许多不同的操作
Switch语句:case标签必须是整数或者枚举,不能是字符串。
switch (表达式) {
case 值1:
语句序列;
[break];
case 值2:
语句序列;
[break];
… … … … …
[default:
默认语句;]
}
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾
与任一case值不匹配,则进入default语句(如果有的话)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 import java.util.Scanner; 2 public class SwitchTest1{ 3 public static void main(String[] args){ 4 int number; 5 System.out.println("请拨号:"); 6 Scanner sc = new Scanner(System.in); 7 number = sc.nextInt(); 8 switch(number){ 9 10 case 1: 11 System.out.println("打给爸爸。。。"); 12 break; 13 case 2: 14 System.out.println("打给妈妈。。。"); 15 break; 16 case 3: 17 System.out.println("打给爷爷。。。"); 18 break; 19 case 4: 20 System.out.println("打给奶奶。。。"); 21 break; 22 default: 23 System.out.println("对不起,没有你要输入的亲情号"); 24 } 25 } 26 }
根据输入的月份,打出该月份的天数(不需要考虑润年、闰月)
int month =(int)(1+Math.random()*12); if(month>0&&month<13){ switch (month) { case 2: System.out.println("28天"); break; case 4: case 6: case 9: case 11: System.out.println("30天"); break; default: System.out.println("31天"); } // 31:1,3,5,7,8,10,12 30:4,6,9,11 28:2 }else{ System.out.println ("月份不合法!"); }
循环结构:
while语句格式
while (布尔表达式) {
循环体;
}
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
public class WhileTest { public static void main(String[] args) { int i = 0; int sum = 0; while (i <= 100) { // 1+2+3+…+100=? sum += i; //sum = sum+i; i++; } System.out.println("Sum= " + sum); } }
while语句结构
do{
循环体;
}while(布尔表达式);
先执行循环体,后判断boolean表达式,循环体至少执行一次,而while循环可能一次都不执行
示例:
1 public static void main(String[] args) { 2 int i=0; 3 int sum = 0; 4 do{ 5 sum +=i; 6 i++; 7 }while(i<=100); 8 System.out.println(sum); 9 }
For循环
For循环语句是支持迭代的一种通用结构,是最有效最灵活的循环结构
语法形式:
for(循环变量初始化; 布尔表达式;循环变量改变语句)
n for循环在第一次反复之前要对循环变量进行初始化。随后,它会进行条件测试,而且在每一次反复的时候,循环变量进行某种形式的“改变”。
- 初始化部分设置循环变量的初值
- 条件判断部分为任意布尔表达式
- 迭代因子控制循环变量的增减
public static void main(String[] args){ int sum = 0; for (int i = 0; i <= 100; i++) { sum += i; } System.out.println("Sum= " + sum); }
如何使用循环结构呢?
当不知道执行次数循环次数的时候使用while循环,当至少执行一次的时候使用do...while循环,当有明确循环次数哦的时候使用for循环
一般而言,能用while循环的都可以用for循环解决,而且for循环看着更加整洁大方
break语句和continue语句
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句
public class BreakTest { public static void main(String[] args) { int total = 0; System.out.println("Begin"); while(true) { total++; int i = (int)Math.round(100 * Math.random()); if(i == 88) break; } System.out.println("Game over, used " + total + " times."); } }
当条件满足时,退出当前循环。不再执行以后的循环
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
把100~150之间不能被3整除的数输出:
public class ContinueTest { public static void main(String[] args) { int count = 0; for (int i = 100; i < 150; i++) { if (i % 3 == 0){ continue; } System.out.println(i); } } }
无限循环的第二种形式是for(;;)。编译器将while(true)与for(;;)看作同一回事。
用循环求九九乘法表:
public class HomeWork1{ //九九乘法表 public static void main(String[] args){ for(int i=1;i<10;i++){ for(int j=1;j<=i;j++){ System.out.print(i+"*"+j+"="+i*j+"\t"); } System.out.println(); } } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步