【左京淳的JAVA学习笔记】第四章 回圈

while及do-while回圈

文法如下
while (条件式){
执行内容
}

当条件式为true时,会进入回圈执行内容。

另外一种do-while文法如下
do{
执行内容
}while (条件式)

不管条件如何,总之先执行一次,之後再看条件决定要不要跑回圈。

来看看范例

class Sample4_1 {
  public static void main(String[] args) {
    //while文
    int count = 5;
    while (count != 5 && count > 0){
      System.out.println("while    : count = " + count);
      count--;
    }
    //do-while文
    count = 5;
    do {
      System.out.println("do-while    : count = " + count);
      count--;
    }while (count != 5 && count > 0);
  }
}

再次提醒,边看文章边练习可以增进学习效率唷。

要执行范例很简单,遵照以下步骤即可:

  1. 点选windows的开始,并输入CMD,打开命令提示字元视窗。
  2. 使用cd指令,移动到范例档所在资料夹。
  3. 使用javac指令,编译范例的java档案。
  4. 使用java指令,执行刚刚编译好的class档案。

※遇到中文无法编译问题,请使用以下指令
javac -encoding utf-8 Sample4_1.java

※遇到中文显示乱码问题,请使用以下指令
chcp 950

把常用指令存在文字档里面,可以更方便操作。

上述范例的执行结果如下

do-while    : count = 5
do-while    : count = 4
do-while    : count = 3
do-while    : count = 2
do-while    : count = 1

可以发现while回圈因为条件不符没被执行,然而do-while回圈因为先执行了一次,後来就符合条件而继续重复执行。

for回圈

直接看范例吧

class Sample4_2 {
  public static void main(String[] args) {
    for (int count = 0; count < 5; count++){
      System.out.println("count = " + count);
    }
  }
}

执行结果

count = 0
count = 1
count = 2
count = 3
count = 4

for回圈的条件式结构如下:
for(变数赋值;判断式;後处理){
处理内容
}
回圈执行流程如下:
判断式->true->处理内容->後处理->判断式
判断式->false->跳出回圈

扩张for回圈

为了方便读取阵列而开发的语法,范例如下:

class Sample4_3 {
  public static void main(String[] args) {
    //阵列宣言
    char[] array = {'a','b','c','d','e'};
    //利用扩张for文逐一读取阵列内容
    for (char c : array){
      System.out.print(c + " ");
    }

    System.out.println(); //改行

    //使用一般for文的写法
    for (int count = 0 ; count < array.length ; count++){
      System.out.print(array[count] + " ");
    }
  }
}

宣告一个变数(c),用来承接阵列取出来的值,写起来乾净多了。

执行结果

a b c d e
a b c d e

扩张for回圈除了阵列之外,也可以取用ArrayList类的列表。

回圈控制

以下几种指令可以用来操纵回圈。
break; //跳出回圈 or 跳出指定的回圈。
continue; //略过剩下的处理,由所在回圈or指定回圈的开头继续执行。
替回圈命名并搭配break或continue使用,即可跳出/移动到指定的回圈。

来看看范例:

class Sample4_4 {
  public static void main(String[] args) {
    loop1: //在回圈前面指定其昵称为loop1
    for (int a = 0 ; a < 3 ; a++){
      for (int b = 0 ; b < 3 ; b++){
        System.out.println("a = " + a + " b = " + b);
        if(a == 1 && b == 1){
          System.out.println("break被执行了。");
          break loop1;
        }
      }
      System.out.println("loop1的後段处理。");
    }
    loop2:
    for (int a = 0 ; a < 3 ; a++){
      for (int b = 0 ; b < 3 ; b++){
        System.out.println("a = " + a + " b = " + b);
        if(a == 1 && b == 1){
          System.out.println("continue被执行了。");
          continue loop2;
        }
      }
    }
  }
}

执行结果

a = 0 b = 0
a = 0 b = 1
a = 0 b = 2
loop1的後段处理。
a = 1 b = 0
a = 1 b = 1
break被执行了。
a = 0 b = 0
a = 0 b = 1
a = 0 b = 2
a = 1 b = 0
a = 1 b = 1
continue被执行了。
a = 2 b = 0
a = 2 b = 1
a = 2 b = 2

可以观察看看break和continue的差异
在break後面指定loop1的话,程序就会直接跳出loop1回圈。
但如果把break後面的loop1拿掉,只会跳出所在(第二层)回圈,程序会继续进行loop1的後段处理。

以上是第四章 回圈的学习心得,接下来第五章会介绍class定义及物件的生成、使用。

参考教材: JAVAプログラマSilver SE8 - 山本 道子


<<:  【课程推荐】2021/3/13~3/14 软件需求塑模与需求规格文件撰写实务班

>>:  证照制度:专业分工时代的基石

[ 卡卡 DAY 13 ] - React Native 页面导览 Navigation (上)

Navigation 的用处? 在一个 App 中一定会有很多页面, Navigation 提供简...

【Day 17】分散式资料库 High Availability 初探

对於分散式资料库的高可用性, 在前面【Day 3】分散式系统模型、容错、高可用的後段已经提过衡量的标...

从零开始的ASP.Net Core 学习

万事起头难 平常的学习方式都是遇到问题才去学、上哪门课学什麽、对哪个主题有兴趣才去学,现在想要有组织...

[Day 10] 练练CSS,加强实作练习

前言 昨天分享了从Amos老师的YouTube影片练习,虽然练习完之後CSS的观念、切版技巧提升不少...

DAY08 - Emmet与PUG简介

在那个用记事本写HTML的年代 (讲古时间) 大叔我在1996年五专入学念资管系,一年级就接触到网页...