其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:
顺序结构
分支结构
循环结构
顺序结构
程序从上到下逐行的执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有If……else和Switch-case两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while,do....while,for三种循环语句。
注:JDK1.5提供了foreach循环,方便的遍历集合,数组元素。
分支结构的if-else(条件判断结构)
if的三种格式:
一、
if(条件表达式){
执行代码块;
}
二、二选一
if(条件表达式){
执行代码块1;
}
else{
执行代码块2:
}
三、多选一
if(条件表达式1){
执行代码块1;
}
else if(){
执行代码块2;
}
.....
else{
执行代码块n;
}
如何获取一个随机数:
公式:[a,b]:(int)(Math.random()*(b-a+1))+a);
import java.util.Scanner;
public class helloworld {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的身高");
int height = scan.nextInt();
System.out.println("请输入你的财产(千万)");
double wealth = scan.nextDouble();
System.out.println("请问你是否帅 是/否");
String hansome = scan.next();
if (height > 180 && wealth > 1 && hansome.equals("是")) {
System.out.println("一定要嫁给他");
} else if (height > 180 || wealth > 1 || hansome.equals("是")) {
System.out.println("比上不足,比下有余");
} else {
System.out.println("滚");
}
}
}
分支结构的switch-case
1.格式:
switch(){
case 常量1
执行语句1;
break;
case 常量2:
执行语句2;
break;
......
default:
执行语句n;
break;
}
2.说明:
①:根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。当调用执行语句后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。
②:break,可以使用在switch-case结构中,表示一旦执行此关键字,就跳出switch-case结构
③:switch结构中的表达式,只能是如下6中数据类型之一:byte、short,char,int,枚举类型(JDK5.0新增),String类型(JDK7.0新增)
④:case之后只能声明常量,不能声明范围;
⑤:break关键字是可选的。
⑥:default:相当于if-else结构中的else;
default是可选的,而且位置灵活;
⑦:如果switch-case结构中的多个case的执行语句相同,则可以合并;
说明:
1.凡是可以使用switch-case的结构,都可以转换为if-else,反之,不成立;
我们写分支结构时,当发现既可以使用switch-case,(同时,Switch中表达式的取值情况不太多)又可以使用if-else时,我们优先选择使用switch-case;
例题:
给出一个几年几月几日输出是几年的第几天;
代码如下:
package com.zsr.java;
import java.util.Scanner;
public class helloworld{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入年份");
int year=scan.nextInt();
System.out.println("请输入月份");
int month=scan.nextInt();
System.out.println("请输入所少日");
int day=scan.nextInt();
int somedays=0;
switch(month){
case 12:
somedays+=31;
case 11:
somedays+=30;
case 10:
somedays+=31;
case 9:
somedays+=30;
case 8:
somedays+=31;
case 7:
somedays+=31;
case 6:
somedays+=30;
case 5:
somedays+=31;
case 4:
somedays+=30;
case 3:
somedays+=31;
case 2:
if((year%4==0&&year%100!=0)||year%400==0)
somedays+=29;
else
somedays+=28;
case 1:
somedays+=day;
break;
}
System.out.println(month+"月"+day+"日"+"是"+year+"年的第"+somedays+"天");
}
}
循环结构
循环语句(init_statement)
循环条件部分(test_exp)
循环体部分(body_statement)
迭代部分(alter_statement)
for循环结构的使用:
一、循环结构的4个要素
①:初始化条件
②:循环条件----->是boolean类型;
③:循环体
④:迭代条件
二、for循环的结构:
for(①;②;④)
{
③;
}
执行过程:①-②-③-④-②-③-④……-②;
java特有的 for(声明循环变量:数组的名字
eg:
package com.zsr.java;
//import java.util.Scanner;
public class helloworld{
public static void main(String[] args) {
int num=0,sum=0;
for(int i=200;i>=0;i--)
{
System.out.print(i+" ");
if(i%2==0)
System.out.print("ou"+" ");
if(i%3==0)
System.out.print("biz"+" ");
if(i%7==0)
System.out.print("ban"+" ");
System.out.println();
}
}
}
eg: 求最大公约数和最小公倍数
package com.zsr.java;
//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
public static void main(String[] args) {
Scanner scan =new Scanner(System.in);
System.out.println("请输入第一个数");
int num1 =scan.nextInt();
System.out.println("请输入第二个数");
int num2=scan.nextInt();
//求最大公约数
int min=(num1<num2)?num1:num2;
for(int i=min;i>=1;i--)
{
if(num1%i==0&&num2%i==0)
{
System.out.println("最大公约数"+i);
break;
}
}
//求最小公倍数;
int max=num1>num2?num1:num2;
for(int j=max;j<=num1*num2;j++)
{
if(j%num1==0&&j%num2==0)
{
System.out.println("最小公倍数"+j);
break;
}
}
}
}
while 循环的使用
一、循环结构的4个要素
①:初始化条件
②:循环条件----->是boolean类型;
③:循环体
④:迭代条件
二、while循环结构:
①
while(②){
③;
④;
}
执行过程:①-②-③-④-②-③-④-……-②;
说明:
1.写while循环千万小心不要丢了迭代条件,一旦丢了,就可能导致死循环;
2.for循环和while循环是可以相互转换的;
区别:for循环和while循环的初始化条件部分的作用范围不同。
三、do-while循环结构:
①
do{
③;
④;
}while(②);
执行过程:①-③-④-②-③-④……②;
说明:
1.do-while循环至少会循环执行一次循环。
2.开发中,使用for和while更多一些,较少使用do-while
3.不在循环条件部分限制次数的结构:for(;;)==while(true)
4.结束循环有几种方式:
方式一:循环条件部分返回false
方式二:在循环体中,执行break
嵌套循环的使用:
1.嵌套循环:将一个循环结构A声明在另一个循环结构B的循环中,就构成了嵌套循环。
2.
外层循环:循环结构B;
内层循环:循环结构A;
3.说明:
①:内层循环结构遍历一遍,只相当于外层循环循环体执行一次。
②:假设外层循环需执行m次,内层循环需要执行n次,此时内层循环的循环体一共执行m*n次。
③:外层循环控制行数,内层循环控制列数。
枚举类型:
enum 枚举名{
常量列表
}
eg1:
enum Season{
春季,夏季,秋季,冬季
}
上下三角形
package com.zsr.java;
//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
public static void main(String[] args )
{
//矩阵
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5;j++)
{
System.out.print("*");
}
System.out.println();
}
//上三角形
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++){
System.out.print("*");}
System.out.println();
}
//下三角形
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5-i;j++)
{
System.out.print("&");
}
System.out.println();
}
}
}
运行结果
*****
*****
*****
*****
*****
*
**
***
****
*****
&&&&
&&&
&&
&
菱形
package com.zsr.java;
//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
public static void main(String[] args){
//上半部分
for(int i=0;i<5;i++)
{
for(int j=0;j<5-i;j++)
{
System.out.print(" ");
}
for(int k=0;k<i+1;k++)
{
System.out.print("$ ");
}
System.out.println();
}
//下半部分
for(int i=0;i<5;i++)
{
for(int j=0;j<i+1;j++)
{
System.out.print(" ");
}
for(int k=0;k<5-i;k++)
{System.out.print("$ ");
}
System.out.println();
}
}
}
运行结果:
$
$ $
$ $ $
$ $ $ $
$ $ $ $ $
$ $ $ $ $
$ $ $ $
$ $ $
$ $
$
菱形2
package com.zsr.java;
//import java.util.Scanner;
import java.util.Scanner;
public class helloworld{
public static void main(String[] args){
//上半部分
for(int i=1;i<=5;i++)
{
for(int j=1;j<=5-i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=i;k++)
{
System.out.print("$ ");
}
System.out.println();
}
//下半部分
for(int i=1;i<=5;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=5-i;k++)
{System.out.print("$ ");
}
System.out.println();
}
}
}
运行结果
$
$ $
$ $ $
$ $ $ $
$ $ $ $ $
$ $ $ $
$ $ $
$ $
$