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。
包和硬盘中实际物理物理位置的比较:

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