luogg_java重新學習_第二章,基本語法02(流程式控制制及迴圈結構)

来源:http://www.cnblogs.com/luogg/archive/2016/07/10/5658393.html
-Advertisement-
Play Games

程式流程式控制制 順序結構 分支結構:if else,switch case 迴圈結構:while,do while,for if else三種格式 //列印九九乘法表 for(int i = 1;i 費時太多,需要優化,首先在flag底下加break,然後將flag==false改為!flag,再將j ...


程式流程式控制制

  • 順序結構
  • 分支結構:if-else,switch-case
  • 迴圈結構:while,do-while,for

if-else三種格式

1.
if(true){
    執行代碼塊;
}

2.
if(){
}else{
}

3.
if(){
}else if(){
}
...
else{
}
if-else的練習
//輸入小明的成績,並輸出相應成績對應的獎勵
        //創建一個Scanner類的對象
        Scanner sc=new Scanner(System.in);
        System.out.println("請輸入小明的期末成績");
        //調用此對象響應的方法,完成鍵盤輸入的值得獲取
        int score=sc.nextInt();
        if(score>100||score<0){
            System.out.println("你輸入的數值有誤,請重新輸入");
        }else if(score==100){
            System.out.println("獎勵一倆BMW");
        }else if(80<score&&score<=99){
            System.out.println("獎勵一部iphone6s");
        }else if(60<score&&score<=80){
            System.out.println("獎勵一本參考書");
        }else{
            System.out.println("什麼都不獎勵");
        }
        sc.close();
switch的用法
 switch(變數){
   case 值1:
   case 值2:
   case 值3:
   default:
 }
  1. 根據變數的值,選擇相應的case去判斷,一旦滿足case條件,就執行case的相應語句,如果沒有break語句,會繼續執行其下的case語句。
  2. default:是可選的,而且位置是靈活的。
  3. 變數可以是哪些類型?char,byte,short,int,枚舉,String。
  4. case條件:其中條件只能是值,不能是取值範圍。switch-case不能對區間進行判斷。

for迴圈
  • for迴圈結構
  • 1.初始化條件
  • 2.迴圈條件
  • 3.迭代條件
  • 4.迴圈體
public static void main(String[] args) {
        int j=1;
        for(System.out.println('a');j<3;System.out.println('b'),j++){
            System.out.println('c');//acbcb
        }
//輸出100以內所有偶數 並計算其和 並說出其偶數的個數
        int sum=0;
        int count=0;
        for(int i=1;i<=100;i++){
            if(i%2==0){
                System.out.println(i);
                sum+=i;
                count++;
            }
        }
        System.out.println("總和為"+sum);//2550
        System.out.println("100以內偶數的個數為"+count);//50
    }
//編寫程式,從1迴圈到150在每行列印一個值,併在3的倍數後邊列印foo,
        //5的倍數後邊列印biz,7的倍數後邊列印baz
        for(int a=1;a<=150;a++){
            System.out.print(a);

            if(a%3==0){
                System.out.print("foo ");
            }
            if(a%5==0){
                System.out.print("biz ");
            }
            if(a%7==0){
                System.out.println("baz");
            }
            System.out.println();
        }

水仙花數

//輸出一個水仙花數,水仙花數就是一個3位數,
        //其各個位上的數字立方和其本身
        //例如:153=1*1*1+5*5*5+3*3*3
        for(int i=100;i<=999;i++){//遍歷所有的三位數    456
            int j1=i/100;//百位
            int j2=(i-j1*100)/10;//十位
            int j3=i%10;//個位
            if(i==j1*j1*j1+j2*j2*j2+j3*j3*j3){
                System.out.print(i+" ");//153 370 371 407
            }
        }

while迴圈

  • 1.初始化條件
  • 2.迴圈條件
  • 3.迭代條件
  • 4.迴圈體

      初始化條件
      while(迴圈條件){
     迴圈體
     迭代條件
      }
  • for迴圈與while迴圈可以相互轉換。
  • while與for的區別:while的初始化條件定義在外邊,for定義在內部,初始化條件在執行完迴圈以後還可以用,而for不可以用。

    // 100以內的偶數的輸出,以及它們的和
        int i = 1;
        int sum = 0;
        while (i <= 100) {
            if (i % 2 == 0) {
                System.out.println(i);
                sum += i;
            }
            i++;
        }
        System.out.println(sum);

do-while(用的少)

  • 1.初始化條件
  • 2.迴圈條件
  • 3.迭代條件
  • 4.迴圈體
初始化條件
    do{
        迴圈體
        迭代條件
    }while(迴圈條件);
  • do-while與while的區別:do-while迴圈至少會執行一次

迴圈練習

//從鍵盤讀入個數為10個的整數,並判斷讀入的正數和負數的個數
        Scanner s = new Scanner(System.in);
        int a = 0;//記錄正數的個數
        int b = 0;//記錄負數的個數
        int c = 0;//記錄0的個數
        for(int i = 1;i <= 10;i++){
            System.out.println("請輸入第"+i+"個整數");
            int num = s.nextInt();
            if(num > 0){
                a++;
            }else if(num < 0){
                b++;
            }else if(num == 0){
                c++;
            }
        }
        System.out.println("正數的個數為"+a);
        System.out.println("負數的個數為"+b);
        System.out.println("0的個數為"+c);
        s.close();
//從鍵盤輸入個數不確定的數,並判斷讀入的正數和負數的個數,輸入0時結束程式
        Scanner s = new Scanner(System.in);
        int a = 0;//記錄正數的個數
        int b = 0;//記錄負數的個數
        for(;;){
            System.out.println("請輸入一個整數:");
            int num = s.nextInt();
            if(num > 0){
                a++;
            }else if(num < 0){
                b++;
            }else{
                break;
            }
        }
        System.out.println("正數的個數為:"+ a);
        System.out.println("負數的個數為:"+ b);
        s.close();
  • 無限迴圈for(;; ) while(true)
  • 一般情況下,在無限迴圈的內部要有程式終止的語句,break,若沒有就是死迴圈了。

迴圈的嵌套使用

        /*
            *****
            *****
            *****
         */
        for (int j = 1; j <= 4; j++) {// 外層迴圈控制行數
            for (int i = 1; i <= 5; i++) {// 內層迴圈控制列數
                System.out.print("*");
            }
            System.out.println();
        }
    /*
            *
            **
            ***
            ****
        */
        
        for (int j = 1; j <= 4; j++) {
            for(int i = 1;i<=j;i++){
                System.out.print("*");
            }
            System.out.println();
        }
        /*
            ****
            ***
            **
            *
         */
        for (int j = 1; j <= 4; j++) {
            for(int i = 4;i>=j;i--){
                System.out.print("*");
            }
            System.out.println();
        }
/*
                ----*
                ---* *
                --* * *
                -* * * *
                * * * * *
                -* * * *
                --* * *
                ---* *
                ----*
         */
        //上半部分
        for(int i = 1;i <= 5;i++){
            for(int j = 4;j >= i;j--){
                System.out.print(" ");
            }
            for(int k = 1;k <= i;k++){
                System.out.print("* ");
            }
            System.out.println();
        }
        //下半部分
        for(int i = 1;i <= 4;i++){
            for(int j = 1;j <= i;j++){
                System.out.print(" ");
        }
            for(int k = 4;k >= i;k--){
                System.out.print("* ");
            }
            System.out.println();
        }
//列印九九乘法表
        for(int i = 1;i <= 9;i++){
            for (int j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + j*i + "\t");
            }
            System.out.println();
        }

列印100以內所有的質數

//打數印100以內所有質數
        //質數:除了1和他本身以外不能再被其他數整除
        boolean flag = false;
        for(int i = 2;i <= 100;i++){//實現100以內自然數遍歷
            for(int j = 2;j < i;j++){
                if(i % j == 0){
                    flag = true;
                }
            }
            if(flag == false){
                System.out.println(i);
            }
            flag = false;
        }
 測試完成求 1-10w 所有質數 所用的毫秒數
 long start = System.currentTimeMillis();
        boolean flag = false;
        for(int i = 2;i <= 100000;i++){//實現100以內自然數遍歷
            for(int j = 2;j < i;j++){
                if(i % j == 0){
                    flag = true;
                }
            }
            if(flag == false){
                System.out.println(i);
            }
            flag = false;
        }
        long end = System.currentTimeMillis();
        System.out.println("完成操作所用的毫秒數為:"+ (end-start));//51305

費時太多,需要優化,首先在flag底下加break,然後將flag==false改為!flag,再將j<i變為j<Math.sqrt(i) 根號i;

long start = System.currentTimeMillis();
        boolean flag = false;
        for(int i = 2;i <= 100000;i++){//實現100以內自然數遍歷
            for(int j = 2;j <= Math.sqrt(i);j++){//判斷根號i
                if(i % j == 0){
                    flag = true;
                    break;
                }
            }
            if(!flag){
                System.out.println(i);
            }
            flag = false;
        }
        long end = System.currentTimeMillis();
        System.out.println("完成操作所用的毫秒數為:"+ (end-start));//51305
        //加上break之後,4796,使用Math.sqrt()之後,270毫秒

break與continue

/*
         * break:結束"當前"迴圈。 
         * continue:跳出"本次"迴圈,繼續下一次迴圈。
         */
        for (int i = 1; i <= 10; i++) {
            if(i % 4 == 0){
                //break;//1,2,3
                continue;//1,2,3,5,6,7,9,10
            }
            System.out.println(i);
        }
  • break和continue語句之後不能再添加其他語句,因為不可能被執行。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、拆分消息隊列 原本在登錄註冊的時候需要使用到簡訊發送,這個需要使用到消息隊列,當時只放入在項目中 現在的新需求在各個環節都有不同的消息推送,短息服務,以及日誌保存,這些索性單獨拎出來作為一個服務提供 (消息隊列採用RabbitMQ,各位看管有興趣可以參考之前發的文章,另外MQ也有ActiveMQ ...
  • 一、MVC概要 MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟體設計規範,用一種將業務邏輯、數據、顯示分離的方法組織代碼,MVC主要作用是降低了視圖與業務邏輯間的雙向偶合。MVC不是一種設計模式,MVC是一種架構模式。當然不同的MVC存在差異。 在web ...
  • 本節進一步介紹對異常的處理,finally的詭異之處,checked/unchecked exception的區別,異常的來源,以及處理的思維邏輯 ... ...
  • 介紹了sparklyr在Linux下的安裝和使用,包括如何解決遇到的問題,如何部署本地spark和集群spark,並給出了官方示例! ...
  • 迴圈結構 <!--EndFragment--> <!--EndFragment--> 【寫在開頭:】 『 生活中的迴圈: C語言中的迴圈: 迴圈結構是程式中一種很重要的結構。其特點是,在給定的條件成立時,反覆執行某程式段,直到條件不成立為止。 C語言中提供了多種迴圈語句: 1)goto語句和if構成 ...
  • 在Qt中,如何響應動作。這會用到Qt的信號和槽機制。 我的理解:它和Win32程式的消息響應機制差不多吧。 信號,簡單理解就是:當我們點擊一個按鈕時,這個按鈕自身就會產生一個叫作"單擊"的信息,這個信息說明瞭剛剛我們點擊了這一個按鈕。產生的這個信息就相當於自己發射了一個信號,表明一個用戶動作已經發生 ...
  • R語言在Linux下安裝一不小心就容易出錯,本文給出了Ubuntu 16.04LTS版本下的R和RStudio Server的安裝方法,不需要自己下載相關包,方便,快捷! ...
  • python-super 由Python的super()函數想到的 首先看一下super()函數的定義: 返回一個代理對象, 這個對象負責將方法調用分配給第一個參數的一個父類或者同輩的類去完成. parent or sibling class 如何確定? 第一個參數的__mro__屬性決定了搜索的順 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...