mapengpeng1999@163.com java语言控制流程

分支结构

分支实际上就是程序根据条件有选择性的执行代码。分支有4种语法格式:

1.-if语句(多个if语句并列)
if(关系表达式1){ 
语句体1; 
}
if(关系表达式2){ 
语句体2; 
}
2.-if else语句
if(条件表达式){//条件表达式是一个布尔类型的 表达式
满足条件表达式执行代码
}  else{
不满足条件表达式执行的代码
}
3.-if else if ...else语句
if(条件表达式){//条件表达式是一个布尔类型的 表达式
满足条件表达式执行代码
}  else if (条件表达式){
满足条件表达式执行的代码
} else if()...{
} else {
不满足条件表达式执行的代码
}
4.- switch case 语句,用于等值判断
switch(表达式) { 
case 常量值1: 
语句体1; 
break; 
case 常量值2: 
语句体2; 
break; 
... 
default: 
语句体n+1; 
break; 
} 
执行流程:
首先计算出表达式的值 ,switch()括号内是变量number或表达式number/2都行,
事先定义好变量的值,case后是具体的常量值不能是变量,而且多个case后面的值不能重复。
表达式的值和case后面值依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case后面值都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

第一种分支:if(多个if语句并列)

public static void main(String[] args){ System.out.println("开始"); // 定义两个变量int a = 10; int b = 20; int c = 10; //变量使用if判断 if(a == b){ System.out.println("a等于b"); }if(a == c){ System.out.println("a等于c"); }System.out.println("结束"); 
}

第二种分支:if else

public static void main(String[] args){ 
// 判断给定的数据是奇数还是偶数 
// 定义变量 
int a = 1; 
if(a % 2 == 0) { 
System.out.println("a是偶数"); 
} else{ 
System.out.println("a是奇数"); 
}
}

第三种分支:if else if …else

public static void main(String[] args) { 
// x和y的关系满足如下: 
// x>=3, y = 2x + 1; 
//‐1<=x<3, y = 2x; 用与符号&&,x >= ‐1 && x < 3
// x<=‐1 ,y = 2x – 1; 
// 根据给定的x的值,计算出y的值并输出。 
// 定义变量 
int x = 5; 
int y; 
if (x>= 3) { 
y = 2 * x + 1; 
} else if (x >= ‐1 && x < 3) { 
y = 2 * x; 
} else { 
y = 2 * x ‐ 1; 
}
System.out.println("y的值是:"+y); 
}

Scanner工具类:

Scanner 是java.util下面的一个类,通常称为扫描类,
这个类中常用的构造方法:public Scanner(InputStream source) ,
表示创建一个Scanner类的实例,参数InputStream实例表示一个字节输入流的实例,
那么我们如果要扫描键盘的输入,则直接定义为System.in ,表示标准的键盘输入。
我们知道Scanner类在java.util包中,所以我们必须导包或者使用包的全类名。
如何接受键盘输入的内容呢?

在这里插入图片描述

import java.util.Scanner;//导包
public class JavaDemo19{public static void main(String args[]){//使用全类名的形式,则不需要导包//java.util.Scanner scanner = new java.util.Scanner(System.in);//构造一个Scanner实例,用于扫描键盘的输入//使用类名的形式,则需要导包Scanner scanner = new Scanner(System.in);//构造一个Scanner实例,用于扫描键盘的输入System.out.println("请输入一个整数:");int x = scanner.nextInt();//接收键盘输入的整型数据System.out.println("您输入的整型数据是:" + x);}
}

第四种分支结构:switch case

if语句、if-else语句、if-else if-else语句等分支语句都是根据一个条件选择执行一个分支操作,而不是选择执行多个分支操作。
switch语句通过使用break语句,可以根据一个条件选择执行一个分支操作(一个case)或多个分支操作(多个case)。
在开发中,如果是纯粹的分支,则可以使用switch case,在Java中使用的局限性比较大,很多的类型数据都不能判断。 范例:用户输入一个1-5之间的数字,判断这个数字具体是1-5之间的哪个数。

import java.util.Scanner;
public class JavaBaseDemo13
{public static void main(String args[]){Scanner sc = new Scanner(System.in);System.out.print("请输入1-5之间的数字:");int inputNum = sc.nextInt();//获取键盘输入的整数/*实际上,每一个case 都需要以break结束,表示如果执行到了这条break,则退出switch case如若没有使用break结束,则只要满足一次case之后,后面的case以及default都会执行*/switch(inputNum){case 1:System.out.println("用户输入的数字为1");break;case 2:System.out.println("用户输入的数字为2");break;case 3:System.out.println("用户输入的数字为3");break;case 4:System.out.println("用户输入的数字为4");break;case 5:System.out.println("用户输入的数字为5");break;default://default就相当于if else 中的elseSystem.out.println("用户输入的数字不在1-5之间");break;}}
}
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK1.7后可以接收字符串。
switch(表达式):在switch中的表达式必须是int类型或者是可以自动转换成int类型的数据,如字符型和字符串型,switch才可以使用,否则会报错,有别于其他的程序设计语言。
switch语句使用的注意事项:
1.多个case后面的数值不可以重复。
2.switch后面小括号当中只能是下列数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举
3.switch语句格式可以很灵活:前后顺序可以颠倒,而且break语句还可以省略。
“匹配哪一个case就从哪一个位置向下执行,直到遇到了break或者整体结束为止。”

在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

public static void main(String[] args) { 
int i = 5; 
switch (i){ 
case 0: 
System.out.println("执行case0"); 
break; 
case 5: 
System.out.println("执行case5"); 
case 10: 
System.out.println("执行case10"); 
default: 
System.out.println("执行default"); 
} 
}

上述程序中,执行case5后,由于没有break语句,程序会一直向后走,不会在判断case,直接运行完整体switch。由于case存在穿透性,因此在编写switch语句时,必须要写上break。

补充:在某些简单的应用中,if语句是可以和三元运算符互换使用的。

public static void main(String[] args) { 
int a = 10; 
int b = 20; 
//定义变量,保存a和b的较大值 
int c; 
if(a > b) { 
c = a; 
} else { 
c = b; 
}
//可以上述功能改写为三元运算符形式 
c = a > b ? a:b; 
}

循环结构

循环:在满足特定的条件下,反复的执行特定的代码。

循环有三种语法格式:(知道循环次数,使用for循环。)

- for循环

for (int i = 1; i <= 100; i++) {
循环体语句;
}for(循环条件的初始化部分;循环条件部分;循环条件改变部分){
循环体;
}

- while循环

int i = 1; //定义初始化变量 
while(i<=10){  //循环条件<=10 
System.out.println("HelloWorld"); //循环体语句i++; //步进,步进语句在循环体最后
} 循环条件的初始化部分
while(循环条件部分){
循环体;
循环条件的改变部分;
}

- do while循环

int i=1; //变量初始化
do {
System.out.println("HelloWorld"); //无条件先执行一次循环体
i++; //步进语句在循环体后面
}while(i<=10); //循环条件放最后,还要加上语句结束分号循环条件的初始化部分
do{
循环体;
循环条件的改变部分;
}while(循环条件部分);
循环结构的基本组成部分,一般可以分成四部分:
1.初始化语句:在循环开始最初执行,而且只做唯一一次。
2.条件判断:如果成立,则循环继续;如果不成立,则循环退出。
3.循环体:重复要做的事情内容,若干行语句。
4.步进语句:每次循环之后都要进行的扫尾工作,每次循环结束之后都要执行一次。
do-while循环的标准格式:
do {循环体
} while (条件判断);扩展格式:
初始化语句
do {循环体步进语句
} while (条件判断);
while循环的标准格式:
while (条件判断) {循环体
}扩展格式:
初始化语句;
while (条件判断) {循环体;步进语句;
}

范例:从1+2+3+…+100

第一种语法格式:for循环

public class JavaBaseDemo15
{public static void main(String args[]){//int i = 1 循环条件的初始化部分//i <=100 循环条件部分//i++ 每执行一次循环,i 都会自增1 是循环部分int sum = 0;// 用来接收每次循环相加的结果for(int i = 1;i<=100;i++){//循环体//int sum = 0;写在里面的话表示 每次执行循环sum 都是从0开始,不能表示从1+2+3+..+100sum += i;}System.out.println("相加结果为:" + sum);}
}

第二种语法格式:while循环

public class JavaBaseDemo16
{public static void main(String args[]){//int i = 1 循环条件的初始化部分//i <=100 循环条件部分,一定是一个boolean表达式,如果这个表达式为真,执行循环,为假退出循环//i++ 每执行一次循环,i 都会自增1 是循环部分int sum = 0;// 用来接收每次循环相加的结果int i = 1;while(i <= 100){//循环体部分sum += i;i++;//循环部分}System.out.println("相加结果为:" + sum);}
}
for 和 while 的小区别: 
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,
而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。
原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

第三种语法格式:使用do while 循环

public class JavaBaseDemo17
{public static void main(String args[]){//int i = 1 循环条件的初始化部分//i <=100 循环条件部分,一定是一个boolean表达式,如果这个表达式为真,执行循环,为假退出循环//i++ 每执行一次循环,i 都会自增1 是循环部分int sum = 0;// 用来接收每次循环相加的结果int i = 1;do{//循环体部分sum += i;i++;//循环部分}while(i <= 100);System.out.println("相加结果为:" + sum);}
}

do while循环是先执行一次循环,再判断是否需要继续执行循环,while循环是先判断条件是否成立,成立则执行循环。do…while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。

总结:

1.三种循环的区别:凡是次数确定的场景多用for循环;否则多用while循环。

2.如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do-while循环会执行至少一次。

3.for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do-while循环初始化语句本来就在外面,所以出来循环之后还可以继续使用。

break和continue关键字,return;方法结束执行

在面试过程中,也经常问到这两个词的用法:

break:终止整个循环,循环不再执行,可以用在switch语句或循环语句中。
1.用在switch语句当中,一旦执行,整个switch语句立刻结束。
2.用在循环语句当中,一旦执行,整个循环语句立刻结束。中断整个循环。
public class Demo14Break {public static void main(String[] args) {for (int i = 1; i <= 10; i++) {// 如果希望从第4次开始,后续全都不要了,就要中断循环if (i == 4) { // 如果当前是第4次break; // 那么就打断整个循环}System.out.println("Hello" + i);}}
}

continue:结束本次循环,继续执行下一次循环,只能用在循环语句中。

public static void main(String[] args) { 
for (int i = 1; i <= 10; i++) { 
//需求:不打印第三次HelloWorld 
if(i == 3){ 
continue; 
}
System.out.println("HelloWorld"+i); 
} 
}
一旦执行,立刻跳过当前次循环剩余内容,马上开始下一次循环。
范例:现在要求输出1-20 之间所有的数字,但是只输出偶数,不输出奇数。
public static void main(String[] args) {for(int i = 1;i <= 20; i++) {if(i % 2 != 0) {continue; //本次循环结束,继续执行下一次循环}System.out.println(i);}}
范例:现在要求输出1-20 之间所有的数字,但是只输出偶数,不输出奇数,并且输出到底3个偶数之后,结束循环。
public static void main(String[] args) {int count = 0;//记录输出的偶数个数for(int i = 1;i <= 20; i++) {if(i % 2 != 0) {//判断是否是奇数continue; //本次循环结束,继续执行下一次循环}System.out.println(i);//输出偶数count ++ ;if(count == 3) {System.out.println("已经输出了3个偶数,循环终止");break;//终止循环}}}

死循环

死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例:while(true){}。 死循环 for( ; ; ) { }。
要注意死循环的出现,死循环出现之后,会一直循环下去,直到占用内存超出(内存溢出)

在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用到跳出语句了。

永远停不下来的循环,叫做死循环。
死循环的标准格式:
while (true) {循环体
}

循环的嵌套

所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数 ,外循环一次,内循环多次。外循环小于内循环

嵌套循环格式:

for(初始化表达式①; 循环条件②; 步进表达式⑦) { 
for(初始化表达式③; 循环条件④; 步进表达式⑥) { 
执行语句⑤; 
} 
}

嵌套循环执行流程:

执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥

外循环一次,内循环多次。

比如跳绳:一共跳5组,每组跳10个。5组就是外循环,10个就是内循环。

练习:使用嵌套循环,打印5*8的矩形

public static void main(String[] args) { 
//5*8的矩形,打印5行*号,每行8个 
//外循环5次,内循环8次 
for(int i = 0; i < 5; i++){ 
for(int j = 0; j < 8; j++){ 
//不换行打印星号 
System.out.print("*"); 
}
//内循环打印8个星号后,需要一次换行 
System.out.println(); 
} }
for嵌套循环。
public class Demo17LoopHourAndMinute {public static void main(String[] args) {for (int hour = 0; hour < 24; hour++) { // 外层控制小时for (int minute = 0; minute < 60; minute++) { // 内层控制小时之内的分钟System.out.println(hour + "点" + minute + "分");}}}
}
范例:输出99乘法表
public class Demo01
{public static void main(String args[]){for(int i = 1;i<=9 ; i++){//循环行for(int j = 1;j<=i;j++){//输出每一行列,每一行的列数=行数System.out.print(i+"*"+j + "=" + (i*j) + "\t");//输出99乘法表中每一个单元格的内容}System.out.println();//每一行输出完成之后的换行}}
}

范例:输出99乘法表,但是要求只输出到第5列,则不再输出了,这个时候我们必须要在内部的循环中使用break去终止外部的循环,那么我们可以给循环起一个别名,然后使用break去终止指定别名的循环。

public static void main(String[] args) {//给外部循环起一个别名abcabc:for(int i = 1;i <= 9 ;i++) { //循环行for(int j = 1;j <= i ; j++) { //循环列System.out.print(i +" * " + j + " = " + i*j + "\t"); //输出99乘法表中每一个单元格的内容if(j >= 5) { //到第五列结束循环break abc; //终止指定的循环}}System.out.println();//换行输出}}

增强版for循环,用于数组或集合的。

int[] numbers = {10,20,30};	//定义个数组	for(int x:numbers) {System.out.println(x); //遍历数组的元素}
练习
import java.util.Scanner;//引用类库中的类public class Teach1{public static void main (String args[]){Scanner input = new Scanner(System.in);//得到一个键盘打字输入菜单窗口System.out.println("请输入一个4位的整数:");//在窗口打印显示该字符串int number = input.nextInt();//例如:1234  int输入的是整数类型int a = number/1000;//整数相除得到整数int b = number/100%10;int c = number/10%10;int d = number%10;boolean isLucky = (a+b+c+d)>20;System.out.println(number+"是幸运数字吗?"+isLucky);//从键盘输入一个4位整数//数字之和大于20则为幸运数字/*程序运行结果,如下:请输入一个4位的整数:6666该数是幸运数字吗?false*/}
}
//想多次使用,加个while循环
public static void main(String[] args) {while(true) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个四位数");int num = sc.nextInt();int a = num/1000;int b = num/100%10;int c = num/10%10;int d = num%10;boolean isLuckly = (a+b+c+d)>20;System.out.println("num是幸运数字?"+isLuckly);}
}import java.util.Scanner;public class Test3{public static void main (String args[]){Scanner input = new Scanner(System.in);System.out.print("请输入第1个数:");int a = input.nextInt();System.out.print("请输入第2个数:");int b = input.nextInt();System.out.print("请输入第3个数:");int c = input.nextInt();int temp ;//声明一个中间变量,便于后面赋值转换。if(a>b){temp = a;a = b;b = temp;}if(a>c){temp = a;a = c;c = temp;}if(b>c){temp = b;b = c;c = temp;}System.out.println("排序后:"+a+","+b+","+c);}
}
/*从键盘输入3个整数,
分别赋给整型变量a、b、c,
然后将输入的整数按照从小到大的顺序放在变量a、b、c中,
并输出三个变量的值。*/
import java.util.Scanner;public class Test2{public static void main (String args[]){Scanner input = new Scanner(System.in);System.out.print("输入一个年龄:");int age = input.nextInt();System.out.print("请输入性别:");String sex = input.next();//不可以写成sex=="男",这是非法输入。equals() 判断字符串是否相等if (age>=7 || (age>=5 && sex.equals("男"))){System.out.println("可以搬动桌子");}else{System.out.println("不可以搬动桌子");}}
}
/*使用if选择结构实现。
如果年龄够7岁,或者年龄够5岁并且性别是“男”,
就可以搬动桌子。*/
import java.util.Scanner;public class Demo3{public static void main (String []args){Scanner input = new Scanner(System.in);System.out.println("请输入一个四位数:");int num = input.nextInt();//1234int a = num/100%10;int random = (int)(Math.random()*10);// Main.random();//得到随机数  [0,1)if(a==random){System.out.println("OK");}else{System.out.println("Not OK");}}
}

Eclipse的使用

下载:https://www.eclipse.org/downloads/packages/
在这里插入图片描述
一定要记住,下载压缩版。
安装:直接解压到当前文件夹即可,前提是要配置好JAVA_HOME环境变量
在这里插入图片描述
打开控制台:window–》show view --》console
Eclipse中所有的java 程序都必须在一个工程中,所以要创建一个工程:
在这里插入图片描述
写好的Java程序只需要按保存之后,Eclipse会自动的编译成class文件,而我们要做的就是执行。
开发中所有的Java程序都必须放在一个包中,包的命名规则是域名倒置,全部小写,然后加上模块名称,我们现在在学习的是Java基础部分,我们定义包名为com.wanbangee.javabase。
包和硬盘中实际物理物理位置的比较:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部