程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java語法基本之輪回構造語句詳解

Java語法基本之輪回構造語句詳解

編輯:關於JAVA

Java語法基本之輪回構造語句詳解。本站提示廣大學習愛好者:(Java語法基本之輪回構造語句詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java語法基本之輪回構造語句詳解正文


1、輪回構造

輪回語句可以在知足輪回前提的情形下,重復履行某一段代碼,這段被反復履行的代碼被稱為輪回體語句,當重復履行這個輪回體時,須要在適合的時刻把輪回斷定前提修正為false,從而停止輪回,不然輪回將一向履行下去,構成逝世輪回。

輪回語句的構成:

初始化語句:一條或許多條語句,這些語句完成一些初始化操作。

斷定前提語句:這是一個boolean 表達式,這個表達式能決議能否履行輪回體。

輪回體語句:這個部門是輪回體語句,也就是我們要屢次做的工作。

掌握前提語句:這個部門在一次輪回體停止後,下一次輪回斷定前提履行前履行。經由過程用於掌握輪回前提中的變量,使得輪回在適合的時刻停止。

eg:在掌握台輸入10次"HelloWorld"時,

初始化語句:界說初始化為第一次。

斷定前提語句:次數不克不及跨越10次。

輪回體語句:輸入”HelloWorld”語句。

掌握前提語句:次數變更為下一次。

2、輪回構造(for輪回語句)

for輪回語句格局:

for(初始化語句;斷定前提語句;掌握前提語句) {
         輪回體語句;
    }

履行流程:

A:履行初始化語句

B:履行斷定前提語句,看其成果是true照樣false:假如是false,輪回停止;假如是true,持續履行。

C:履行輪回體語句

D:履行掌握前提語句

E:回到B持續

流程圖:

留意事項:

(1)斷定前提語句的成果是一個boolean類型

(2)輪回體語句假如是一條語句,年夜括號可以省略;假如是多條語句,年夜括號不克不及省略。建議永久不要省略。

(3)普通來講:有左年夜括號就沒有分號,有分號就沒有左年夜括號

代碼舉例:

1、求出1-100之間偶數和:

/*
  需求:
    A:求1-100之和。
    B:求出1-100之間偶數和
*/
class ForTest1 {
  public static void main(String[] args) {
    //求1-100之和。
    int sum1 = 0;
    
    for(int x=1; x<=100; x++) {
      sum1 +=x;
    }
    
    System.out.println("1-100之和是:"+sum1);
    System.out.println("------------------");
    
    //求出1-100之間偶數和
    //方法1
    int sum2 = 0;
    
    for(int x=1; x<=100; x++) {
      if(x%2 == 0) {
        sum2 += x;
      }
    }
    
    System.out.println("1-100偶數之和是:"+sum2);
    System.out.println("------------------");
    
    //方法2
    int sum3 = 0;
    
    for(int x=0; x<=100; x+=2) {
        sum3 += x;
    }
    
    System.out.println("1-100偶數之和是:"+sum3);
    System.out.println("------------------");
  }
}

2、求5的階乘:

/*
  需求:求5的階乘。
  
  甚麼是階乘呢?
    n! = n*(n-1)! 規矩
    n! = n*(n-1)*(n-2)*...*3*2*1
    
  乞降思惟。
  求階乘思惟。
*/
class ForTest2 {
  public static void main(String[] args) {
    //界說終究成果變量
    int jc = 1;
    
    //這裡的x其實可以直接從2開端
    //for(int x=1; x<=5; x++) 
    
    for(int x=2; x<=5; x++) {
      jc *=x;
    }
    
    System.out.println("1-5的階乘是:"+jc);
  }
}

3、在掌握台輸入一切的“水仙花數”:

/*

  需求:在掌握台輸入一切的”水仙花數”
  
  剖析:
    我們都不曉得甚麼叫"水仙花數",你讓我怎樣做呢?
    
    所謂的水仙花數是指一個三位數,其列位數字的立方和等於該數自己。
    舉例:153就是一個水仙花數。
    153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153

    A:三位數實際上是告知了我們規模。
    B:經由過程for輪回我們便可以完成獲得每個三位數
     然則費事是若何獲得這個三位數的個,十,百位上的數據
     
     我們若何獲得一個數據的個,十,百呢?
      假定有個一個數據:153
      ge:  153%10 = 3
      shi: 153/10%10 = 5
      bai:153/10/10%10 = 1
      qian:x/10/10/10%10
      wan: x/10/10/10/10%10
      ...

    C:讓ge*ge*ge+shi*shi*shi+bai*bai*bai和該數據比擬
     假如雷同,就把該數據在掌握台輸入。
*/
class ForTest3 {
  public static void main(String[] args) {
    //三位數實際上是告知了我們規模。
    for(int x=100; x<1000; x++) {
      int ge = x%10;
      int shi = x/10%10;
      int bai = x/10/10%10;
      
      //讓ge*ge*ge+shi*shi*shi+bai*bai*bai和該數據比擬
      if(x == (ge*ge*ge+shi*shi*shi+bai*bai*bai)) {
        //假如雷同,就把該數據在掌握台輸入。
        System.out.println(x);
      }
    }
  }
}

3、輪回構造(while輪回語句)

while輪回語句格局:

while(斷定前提語句) {
         輪回體語句;
   }

   //擴大格局
   初始化語句;
   while(斷定前提語句) {
         輪回體語句;
         掌握前提語句;
    }

流程圖:

for輪回和while輪回的差別:

for輪回語句和while輪回語句可以等價轉換,但照樣有些小差別的。

(1)應用差別:

掌握前提語句所掌握的誰人變量,在for輪回停止後,就不克不及再被拜訪到了,而while輪回停止還可以持續應用,假如你想持續應用,就用while,不然推舉應用for。緣由是for輪回停止,該變量就從內存中消逝,可以或許進步內存的應用效力。

(2)場景差別:

for輪回合適針對一個規模斷定停止操作while輪回合適斷定次數不明白操作

代碼舉例:

我國最平地峰是珠穆朗瑪峰:8848m,我如今有一張足夠年夜的紙張,厚度為:0.01m。請問,我折疊若干次,便可以包管厚度不低於珠穆朗瑪峰的高度?

/*
  我國最平地峰是珠穆朗瑪峰:8848m,我如今有一張足夠年夜的紙張,厚度為:0.01m。
  請問,我折疊若干次,便可以包管厚度不低於珠穆朗瑪峰的高度?

  剖析:
    A:界說一個統計變量,默許值是0
    B:最平地峰是珠穆朗瑪峰:8848m這是終究的厚度
     我如今有一張足夠年夜的紙張,厚度為:0.01m這是初始厚度
    C:我折疊若干次,便可以包管厚度不低於珠穆朗瑪峰的高度?
     折疊一次有甚麼變更呢?就是厚度是之前的2倍。
    D:只需每次變更的厚度沒有跨越珠穆朗瑪峰的高度,就折疊,統計變量++
    E:輸入統計變量。
*/

class WhileTest01 {
  public static void main(String[] args) {
    //界說一個統計變量,默許值是0
    int count = 0;
    
    //最平地峰是珠穆朗瑪峰:8848m這是終究的厚度
    //我如今有一張足夠年夜的紙張,厚度為:0.01m這是初始厚度
    //為了簡略,我把0.01釀成1,同理8848就釀成了884800
    int end = 884800;
    int start = 1;
    
    while(start<end) {
      //只需每次變更的厚度沒有跨越珠穆朗瑪峰的高度,就折疊,統計變量++
      count++;
      
      //折疊一次有甚麼變更呢?就是厚度是之前的2倍。
      start *= 2;
      
      System.out.println("第"+count+"次厚度是"+start);
    }
    
    //輸入統計變量。
    System.out.println("要疊"+count+"次");
  }
}

4、輪回構造(do…while輪回語句)

根本格局:

do {

輪回體語句;

}while((斷定前提語句);[/code]

擴大格局:

初始化語句;

do {

輪回體語句;

掌握前提語句;

} while((斷定前提語句);[/code]

流程圖:

5、輪回構造的差別及留意事項:

三種輪回語句其實都可以完成一樣的功效,也就是說可以等價轉換,但照樣有小差別的:

do…while輪回至多會履行一次輪回體。for輪回和while輪回只要在前提成立的時刻才會去履行輪回體

1、留意事項:

寫法式優先斟酌for輪回,再斟酌while輪回,最初斟酌do…while輪回。

以下代碼是逝世輪回:

while(true){}

for(;;){}

2、輪回的嵌套應用:就是輪回語句的輪回體自己是一個輪回語句

(1)標題一:請輸入一個4行5列的星星(*)圖案:

提醒:外輪回掌握行數,內輪回掌握列數

/*
  需求:請輸入以下的外形
    *
    **
    ***
    ****
    *****

    提醒:外輪回掌握行數,內輪回掌握列數
*/
class ForForTest01 {
  public static void main(String[] args) {
    //經由過程簡略的不雅察,我們看到這是一個行是5,列數是變更的外形
    //我們先打印出一個5行5列的外形
    for(int x=0; x<5; x++) {
      for(int y=0; y<5; y++) {
        System.out.print("*");
      }
      System.out.println();
    }
    
    System.out.println("--------------");
    
    //我們完成了一個5行5列的外形
    //然則這不是我們想要的
    //我們要的是列數變更的
    //列數是若何變更的呢?
    //第一行:1列  y=0,y<=0,y++
    //第二行:2列  y=0,y<=1,y++
    //第三行:3列  y=0,y<=2,y++
    //第四行:4列  y=0,y<=3,y++
    //第五行:5列  y=0,y<=4,y++
    //在看外輪回x的變更,正好就是x=0,1,2,3,4
    //所以這個終究版的法式就是以下
    for(int x=0; x<5; x++) {
      for(int y=0; y<=x; y++) {
        System.out.print("*");
      }
      System.out.println();
    }
  }
}

(2)標題二:在掌握台輸入九九乘法表:

/*
  需求:在掌握台輸入九九乘法表。
  
  起首我們寫出九九乘法表:
    1*1=1
    1*2=2  2*2=4
    1*3=3  2*3=6  3*3=9
    1*4=4  2*4=8  3*4=12  4*4=16
    ...
    1*9=9  2*9=18  3*9=27  ...
    
  我們先把這個九九乘法表看出是如許的一個外形:
    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    
  留意:
    '\x' x表現隨意率性,這類做法叫轉移字符。
    
    '\t'  一個制表符的地位(tabtab鍵)
    '\r'  回車
    '\n'  換行
*/
class ForForTest02 {
  public static void main(String[] args) {
    for(int x=0; x<9; x++) {
      for(int y=0; y<=x; y++) {
        System.out.print("*");
      }
      System.out.println();
    }
    System.out.println("--------------");
    //為了應用數據,我們從1開端
    for(int x=1; x<=9; x++) {
      for(int y=1; y<=x; y++) {
        System.out.print(y+"*"+x+"="+y*x+"\t");
      }
      System.out.println();
    }
  }
}

運轉後果:

6、跳轉掌握語句:

後面我們曾經說過了,Java中的goto是保存字,今朝不克不及應用。固然沒有goto語句可以加強法式的平安性,然則也帶來許多未便,好比說,我想在某個輪回曉得到某一步的時刻就停止,如今就做不了這件工作。為了填補這個缺點,Java就供給了break,continue和return來完成掌握語句的跳轉和中止。

break 中止
continue 持續
return 前往

1、跳轉掌握語句(break):

break的應用場景:

~在選擇構造switch語句中

~在輪回語句中(輪回語句中參加了if斷定的情形)

注:分開應用場景的存在是沒成心義的

break的感化:

A:跳出單層輪回

B:跳出多層輪回

要想完成這個後果,就必需曉得一個器械。帶標簽的語句。標簽名要相符Java的定名規矩

格局:

標簽名: 語句

代碼舉例:

/*
  掌握跳轉語句:
    break:中止
    continue:持續
    return:前往
  
  break:中止的意思
  應用場景:
    A:switch語句中
    B:輪回語句中。
      (輪回語句中參加了if斷定的情形)
    留意:分開下面的兩個場景,有意義。
    
  若何應用呢?
    A:跳出單層輪回
    B:跳出多層輪回
      要想完成這個後果,就必需曉得一個器械。帶標簽的語句。
      格局:
        標簽名: 語句
*/
class BreakDemo {
  public static void main(String[] args) {
    //在 switch 或 loop 內部中止
    //break;
    
    //跳出單層輪回
    for(int x=0; x<10; x++) {
      if(x == 3) {
        break;
      }
      System.out.println("HelloWorld");
    }
    
    System.out.println("over");
    System.out.println("-------------");
    
    //跳出多層輪回
    wc:for(int x=0; x<3; x++) {
      nc:for(int y=0; y<4; y++) {
        if(y == 2) {
          //break nc;
          break wc;
        }
        System.out.print("*");
      }
      System.out.println();
    }
  }
}

第38行,我們給裡面的輪回加了一個標簽叫wc,然後在第42行跳轉出這個標簽。

運轉後果:

注:現實開辟中,簡直用不到跳轉多層輪回這個功效。

2、跳轉掌握語句(continue):

continue的應用場景:

在輪回語句中分開應用場景的存在是沒成心義的

continue和break的差別:

break 跳出單層輪回continue 跳出一次輪回,進入下一次的履行。

後果以下:

面試題:

for(int x=1; x<=10; x++) {
    if(x%3==0) {
      //在此處填寫代碼

    }
    System.out.println("Java進修");
  }

在下面代碼的第4行填入一行代碼,知足一下前提:

我想在掌握台輸入2次:"Java進修" break;

我想在掌握台輸入7次:"Java進修" continue;

我想在掌握台輸入13次:"Java進修" System.out.println("Java進修");

3、跳轉掌握語句(return)

return症結字不是為了跳轉出輪回體,更經常使用的功效是停止一個辦法,也就是加入一個辦法,跳轉到下層挪用的辦法。

說白了:return的感化不是停止輪回,而是停止辦法。

後果以下:

輪回語句聯合break的演習:

面試題:小芳的媽媽天天給她2.5元錢,她都邑存起來,然則,每當這一天是存錢的第5天或許5的倍數的話,她都邑花去6元錢,請問,經由若干天,小芳才可以存到100元錢。

代碼完成:

/*
  需求:小芳的媽媽天天給她2.5元錢,她都邑存起來,然則,
     每當這一天是存錢的第5天或許5的倍數的話,她都邑花去6元錢,
     請問,經由若干天,小芳才可以存到100元錢。

  剖析:
    A:小芳的媽媽天天給她2.5元錢
      double dayMoney = 2.5;
    B:她都邑存起來
      double daySum = 0;
    C:從第一天開端存儲
      int dayCount = 1;
    D:經由若干天,小芳才可以存到100元錢。
      double result = 100;
    E:這一天是存錢的第5天或許5的倍數的話,她都邑花去6元錢,
      解釋要斷定dayCount的值,假如對5整除就減去6元錢。
        daySum -= 6;
     由此還隱含了一個成績,就是假如不是5的倍數天的話,錢要累加
        daySum += dayMoney;
    F:由於不曉得是若干天,所以我用逝世輪回,一旦跨越100元我就加入輪回。
*/
class WhileDemo {
  public static void main(String[] args) {
    //天天要存儲的錢是2.5元
    double dayMoney = 2.5;
    
    //存錢的初始化值是0
    double daySum = 0;
    
    //從第一天開端存儲
    int dayCount = 1;
    
    //終究存儲不小於100就不存儲了
    int result = 100;
    
    //由於不曉得是若干天,所以我用逝世輪回,
    while(true) {
      //累加錢
      daySum += dayMoney;
      
      //一旦跨越100元我就加入輪回。
      if(daySum >= result) {
        System.out.println("共花了"+dayCount+"天存儲了100元");
        break;
      }
      
      if(dayCount%5 == 0) {
        //花去6元錢
        daySum -= 6;
        System.out.println("第"+dayCount+"天花了6元錢");
      }
      
      //天數變更
      dayCount++;
    }
  }
}

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved