【JAVA零基础入门系列】Day8 Java的控制流程

时间:2023-02-21 17:32:14

  【JAVA零基础入门系列】(已完结)导航目录

  什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等。举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下外面是否下雨,下雨的话就得带伞,否则就直接出门,同时,外面可能有很多家水果店,那去哪家买呢?这里把价格放在第一要素,所以你会一家一家跑,直到找到最便宜的那家为止。

  其实,上述买苹果的过程,已经用了两种最常用的控制流程:条件和循环。画个流程图就像这样:

  【JAVA零基础入门系列】Day8 Java的控制流程

  通过这个图,大家应该能很清楚的了解整个决策过程。其实在程序中也是这样运行的,下面再来详细的介绍一下这几个流程控制语句。

  1、条件语句if

  条件语句用于判断,就像上面的判断是否下雨一样,转换成代码就是:

if (isRaining == true){
//take a umbrella
}
//go out

  跟if一起使用的是else以及else if,用作分支,比如说,分数在90-100分是优秀,80-90分是满意,60-80分是及格,60分以下是不及格,那么转换成代码如下:

if(mark >90 && mark <= 100){
//优秀
}else if(mark >80){
//满意
}else if(mark >60){
//及格
}else{
//不及格
}

  上述代码中,使用了if跟else if 以及else的组合。如果mark是70分,则会先在if中判断第一个条件,因为不满足括号内条件,不成立,则流程进入else if,判断第二个条件是否满足,发现第二个条件也不满足,因此进入第三个条件,发现第三个条件满足,因此会执行及格这一部分的代码。

  2.循环语句

  Java的循环语句主要有这么几个:while,do  while,for

  while循环很简单,先判断后面的条件是否满足,如果满足则执行后续的代码,一直循环执行,直到条件不成立为止。举个栗子,总分一百分,错一个题扣十分,低于六十分则判定为失败。

  while(循环条件){
   循环体;
  }

  例如:

int mark = 100;
while(mark>60){
mark -= 10;
System.out.println(mark);
}

  这里的"mark-=10"是"mark = mark - 10"的简写形式,这段代码会依次输出90,80,70,60,因为60>60不成立,所以循环结束。

  当然,循环中也可以用break跟continue来控制,break直接跳出当前循环,执行循环部分后面的代码,而continue则是直接跳到本轮循环的末尾。举个栗子:

int accout=0;
while(true){ accout++;
if(accout==5){
break;
}
if(accout==2){
continue;
}
      System.out.println("accout:"+accout);
} 

  这里会依次输出1,3,4,因为account=2时,执行continue会跳过之后的代码,直接跳到下一次循环,而account=5的时候,执行break,跳出循环。这里的while用逻辑值true来控制也是比较常见的用法。

  而do while跟while的区别在于,do while是先执行循环体,再判断条件是否成立,就是说,不论如何,循环体至少会被执行一次。两种循环适用的场合不一样。举个栗子。do-while 语句的语法格式为:

do{
循环体;
}while(循环条件);
int i=0;
do {
System.out.println("我一定会执行一次的");
i++;
}while(i<5);

  这里会输出五次“我一定会执行一次的”。

  再介绍一下最常用的循环,for循环,for 语句的基本结构如下所示:

for(初始化表达式;判断表达式;递增(递减)表达式){
执行语句; //一段代码
}

  初始化表达式:初始化表达式的意义,在于定义循环之前变量的值是多少,如果没有这一项,就不知道该从哪个值开始循环。

  判断表达式:判断表达式的作用在于规定循环的终点。如果没有判断表达式,那么此循环就成了死循环。

  递增(递减)表达式:这一项规定每执行一次程序,变量以多少增量或减量进行变化  

  结构清楚了,现在就举一个最基础的例子来介绍一下:(这个例子是循环输出0到5的数字。)
for(int i=0;i<5;i++){
System.out.println("i:"+i);
}

  初始化也可以放在循环之前:

int j=0;
for(;j<=6;j=j+2){
System.out.println("j:"+j);
}

  如果要用for执行死循环的话:

for(;;){
  System.out.println("yes");
}

  如果既要执行死循环又要用参数进行控制的话:

int n=0;
for(;;n=n+10){
System.out.println("n:"+n);
}

  for循环还有一个很常用的地方就是遍历数组,所谓遍历,就是一个一个访问。

String[] strNum={"张三","李四","王五"};
for(String str:strNum){
System.out.println("name:"+str);
}

  关于数组的知识会在之后做讲解,这里不需要深究。

  如果想要利用for实现多层循环的,可以这么写:

for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
System.out.print(j+" ");
}
System.out.println("i:"+i);
}

  具体的代码效果,大家可以放计算机里跑一跑,才能弄明白到底是怎么回事。

  三种循环到此就介绍完了,现在给大家说一下三种例子的具体使用场景:
  1.for一般是在循环个数已知的情况下使用的
  2.while一般是在循环个数未知,且循环受到严格控制的情况下使用的。
  3.do-while一般也是在循环个数未知,但是它和while最大的不同点在于,不管循环的条件是什么,do-while都会至少执行一次。
  
  3.多重选择:switch语句
  这里还介绍一种控制语句,叫做switch,主要用于处理多个选项,比如说,根据ABCD四个等级给出四个评语,如果用if-else语句会显得有些笨拙,尤其当需要判断的选项很多时,会更加明显。
Scanner in = new Scanner(System.in);
System.out.print("Select a mark(A,B,C,D)");
char mark = in.next().charAt(0);
switch(mark){
case 'A':
  System.out.println("Wonderful!");
      break;
case 'B':
System.out.println("Great!");      break;
  case 'C': System.out.println("Good!");
        break;
  case 'D': System.out.println("Not Bad!");
      break;
  default: System.out.println("Error Input!");
      break;
}

  这里先读取你输入的字母,然后switch语句会将它与case里的条件一一对比,直到找到相符的项,然后执行后面的代码.。如果你输入的是ABCD之外的字母或是其他内容,由于没有项与其匹配,则会执行default部分的代码,输出”Error Input“。这里的每一句case后面都跟了一句break,如果不加break,则会顺序执行,直到遇到break或者全部执行完毕。

  至此,本篇内容结束,欢迎大家继续关注。

【JAVA零基础入门系列】Day8 Java的控制流程的更多相关文章

  1. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

  2. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  3. 【JAVA零基础入门系列】Day5 Java中的运算符

    运算符,顾名思义就是用于运算的符号,比如最简单的+-*/,这些运算符可以用来进行数学运算,举个最简单的栗子: 已知长方形的长为3cm,高为4cm,求长方形的面积. 好,我们先新建一个项目,命名为Rec ...

  4. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  5. 【JAVA零基础入门系列】Day9 Java中的那个大数值

    什么是大数值?用脚趾头想也知道,当然是"大"的数值(233).Java中有两个用于表示大数值的类,BigInteger和BigDecimal,那到底能表示多大的数值呢?理论上,可以 ...

  6. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  7. 【JAVA零基础入门系列】Day11 Java中的类和对象

    今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...

  8. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  9. 【JAVA零基础入门系列】Day13 Java类的继承与多态

    继承是类的一个很重要的特性,什么?你连继承都不知道?你是想气死爸爸好继承爸爸的遗产吗?(滑稽) 开个玩笑,这里的继承跟我们现实生活的中继承还是有很大区别的,一个类可以继承另一个类,继承的内容包括属性跟 ...

随机推荐

  1. JavaScript与java的异同(一)

    讲个故事:话说很久很久以前,有一个叫网景(Netscape)的,十月怀胎,他生了个儿子,很开兴,给儿子取名livescript.Livescript很勤奋,帮大叔大婶干了好多活,也给他爸赚了很多钱.突 ...

  2. rsync同步Nginx日志遇到问题总结

    一.目的 将nginx 日志通过普通用户利用rsync公钥认证的方式实时同步到本地服务器上,之后使用elk程序进行处理. 二.遇到问题及解决方法思路 问题1.文件权限:nginx 的日志默认权限如下: ...

  3. 号外号外:9月13号《Speed-BI云平台案例实操--十分钟做报表》开讲了

    引言:如何快速分析纷繁复杂的数据?如何快速做出老板满意的报表?如何快速将Speed-BI云平台运用到实际场景中?         本课程将通过各行各业案例背景,将Speed-BI云平台运用到实际场景中 ...

  4. OpenVPN 如何记住用户名和密码

    最近在使用OpenVPN,但是没有记住用户名和密码功能,太坑人,研究一下发现是可以的. 1. 在OpenVPN安装目录下\OpenVPN\config文件夹中找到vpnserver.ovpn文件. 2 ...

  5. SignalR Supported Platforms -摘自网络

    SignalR is supported under a variety of server and client configurations. In addition, each transpor ...

  6. Qt编程之右键单击QTreeWidgetItem弹出菜单

    其实有这个需求很好理解,就是我有个project manager,上面的TreeWidgetItem都表示一个工程,我需要右键创建新的工程,或者删除.这个在很多普通软件中也见得多.在弹出的菜单中加入相 ...

  7. Cocos2d-x 3&period;0final 终结者系列教程04-引擎架构分析

    从前,有一个跟我来Android学生,总是问我: 沉老师,为什么Android的形式被称为Activity,为什么要onCreate方法写setContentView(R.layout.main)? ...

  8. JAVA中反射机制五(java&period;lang&period;reflect包)

    一.简介 java.lang.reflect包提供了用于获取类和对象的反射信息的类和接口.反射API允许对程序访问有关加载类的字段,方法和构造函数的信息进行编程访问.它允许在安全限制内使用反射的字段, ...

  9. 关于手贱--npm 误改全局安装路径

    1.通过 npm config set prefix "目录路径" 来设置.通过 npm config get prefix 来获取当前设置的目录. 2.npm config se ...

  10. Silverlight中使用MVVM&lpar;2&rpar;-&lpar;提高&rpar;

    在第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知 ...