首页 > 作文

java基础算法和结构(详解java常用算法)

更新时间:2023-04-04 05:50:37 阅读: 评论:0

一、分支语句

流程控制语句对任何一门编程语言都是非常重要的,java中基于流程控制程序执行的不同步骤和代码块。

1、if条件

if条件语句会根据不同的判断条件执行不同的语句,if后括号内的条件是否成立关键步骤,if条件的判断结果必然要是true或fal。if…el语句则是满足if条件,就执行相应代码块,否则就执行ela代码块。

public class process01 {    public static void main(string[] args) {        // 演示:node01        if (compare01(40,30)){            system.out.println("40>30:true");        } el {            system.out.println("40>30:fal");        }        // 演示:node02        if (compare01(10,20) && compare01(20,30)){            system.out.println("条件成立");        } el {            system.out.println("条件不成立");        }        // 演示:node03        if (compare01(20,10) || compare01(20,30)){            system.out.println("条件成立");        } el {            system.out.println("条件不成立");        }        // 演示:node04        if(compare02(1,1))            if(compare02(2,2))                system.out.println("running...");        // 演示:node05        if(compare01(1,2))            if(compare01(5,3)){                system.out.println("5>3");            }    }    private static boolean com性病潜伏pare01 (int num1,int num2){        system.out.println("判断:num1="+num1+";num2="+num2);        return num1 > num2 ;    }    private static boolean compare02 (int num1,int num2){        system.out.println("判断:num1="+num1+";num2="+num2);        return num1 == num2 ;    }}

节点案例,测试结果描述:

node01:如果if条件不成立,则执行el流程或者结束;node02:逻辑且判断,任何条件不成立,则直接结束;node03:逻辑或判断,任何条件成立,则直接进入分支;node04:if的格式,可以去掉{},后续语句会作为分支;node05:if语句面试题,不会输出任何内容,第二个语句作为分支;

注意:在流程控制语句中必须使用大括号,即使只有一行代码,避免采用单行的编码方式,这是基础规范。在上面的测试节点4和5,代码看着就感觉扎心。

2、if-el-if条件

el…if分支语句用于多种情况进行的判断处理,直到分支判断条件成功,执行分支模块代码,如果没有el条件,可以所有分支都不满足,直接结束。

public class process02 {    public static void main(string[] args) {        elif(11) ;        elif(9) ;        elif(5);    }    private static void elif (integer num){        if (num > 10){            system.out.println("num > 10");        } el if (num > 7){            system.out.println("num > 7");        } el if (num > 4){            system.out.println("num > 4");        } el {            system.out.println("num < 4");        }    }}

注意:根据条件逐个判断,直到找到第一个满足的条件,不会再继续往下面的判断执行,分支语句执行完毕就会退出当前的el…if流程。超过3层的的逻辑判断代码可以使用卫语句、策略模式、状态模式等来实现。

3、switch条件

流程描述:switch语句先获取表达式的值,判断表达式的值与ca语句后的常量值是否相同,匹配成功则执行该ca后的代码块,直到遇到break语句后终止,如果缺失break打断,则继续匹配下一ca常量,直到遇到break为止。如果条件全不匹配,则执行default后面的语句。default语句可选,如果不存在default语句,同一个switch语句,ca的常量值必须互不相同。

public class process03 {    public static void main(string[] args) {        scanner scan = new scanner(system.in);        system.out.print("what day is it today:");        string value = scan.next();        weekinfo(value);    }    private static void weekinfo (string value){        switch (value) {            ca "monday":                system.out.println("monday");                break;            ca "tuesday":                system.out.println("tuesday");                break;            ca "wednesday":                system.out.println("wednesday");                break;            ca "thursday":                system.out.println("thursday");                break;            ca "friday":                system.out.println("friday");                break;            ca "saturday":                system.out.println("saturday");                break;            ca "sunday":                system.out.println("sunday");                break;            default:                system.out.println("matching failure");                break;        }    }}

注意:从jd报考网站k1.7之后,switch支持对string字符串的匹配。

二、循环语句

循环语句就是在满足特定条件的情况下,反复执行同个操作。循环语句包括:for循环、while循环、do···while循环。

1、for循环

java开发中最有用的循环方式,也是诸多算法中的基础控制语句,在常见的很多算法编码实现中,都需要借助for循环方式。

public class process04 {    public static void main(string[] args) {        // node01        int sum = 0;        for(int i=1; i<=100; i++) {            sum += i;        }        system.out.println(sum);        // node02        string[] namearr = {"java","c++","c#"} ;        for (string name:namearr){            system.out.println("name="+name);        }        // node03        // 输出 i = 13        int i = 0;        for (i++; i++ < 10; i++);        system.out.println(++i);        // 输出:j=3 6 9        int j = 0;        for (j++; j++ < 10; j++){            system.out.println(++j);        }    }}

节点案例,测试结果描述:

node01:for循环作为计算中的常用方式;node02:foreach遍历模式,简化循环操作,也可以改写为for语句;node03:循环for语句的基础执行机制,两道面试常见题;

注意:越是基础的东西,学起来越难,for语句作为很多算法实现的基础控制,理解起来相当的绕。

2、while循环

while循环语句首先判断条件是否成立,成立才执行循环体;

do···while循环语句先执行一次循环体,然后判断条件是否成立,所以do···while至少会执行一次;

public class process05 {    public static void main(string[] arg俄罗斯地理s) {        int num1 = 1;        int num2 = 1;        // while循环        while(num1 <= 3) {            system.out.println("num1 == " + num1);            num1++;        }        // do...while循环        do {            system.out.println("num2 == " + num2);            num2++;        } while(num2 <= 3);    }}

注意:while循环在实际的开发中,因为极其容易导致死循环,所以使用并不多。

三、流程中断

java中有三种流程中断语句,关键字分别为break、continue、return语句。

1、return语句

java中最常用的流程控制关键字,当执行return语句后,从该方法返回,返回到调用该方法的业务流程中。

public class process06 {    public static void main(string[] args) {        system.out.println(getnum1());        system.out.println(getnum2());    }    public static int getnum1 (){        int a =100;        try{            return a+1;   // 这里是运算逻辑,非赋值        }catch(exception e){            e.printstacktrace();        }finally{            return a;        }    }    public static int getnum2 (){        int a =100;        try{            return a++;   //  a++ -> a=a+1 此时a的值改变        }catch(exception e){            e.printstacktrace();        }finally{            return a;        }    }}

return 常在位置

return语句只在方法最后出现一次。return语句仅在try和catch里面都出现。return语句仅在try和方法最后都出现。return语句仅在catch和方法的最后都出现。

2、break语句

break中断语句常用在for、while、do···while循环中,用于退出当前整个循环流程,非当前这一次循环。

public class process07 {    public static void main(string[] args) {        for (int i = 1 ; i < 3 ; i++){            if (i == 2){                break ;            }            system.out.println("i = " + i);        }    }}

3、continue语句

continue中断语句常用在for、while、do···while循环中,用于退出当前这一次循环,进入下一次循环。

public class process08 {    public static void main(string[] args) {        for (int i = 1 ; i < 3 ; i++){            if (i == 1){                continue ;            }            system.out.println("i = " + i);        }    }}

四、应用场景

1、冒泡排序算法

public class process09 {    public static void main(string[] args) {        int[] score = {9,8,7,6,5} ;        // 排序次数:最多 length - 1 次        for (int i = 0 ; i < score.length -1 ; i ++){            // 当前排序的集合区间,排序完一个数据就放弃一个            for (int j = 0 ; j < score.length - i - 1 ; j++){                // 冒泡排序:把结果大的向后扔                if (score[j] > score[j+1]){                    int temp = score[j] ;                    score[j] = score[j+1] ;                    score[j+1] = temp ;                }            }        }        // 输出排序后的结果集        for (int i = 0 ; i < score.length ; i++){            system.out.print(score[i]);        }    }}

2、排列组合算法

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

public class process10 {    public static void main(string[] args) {        arrange() ;    }    public static void arrange (){        int i=0; // 百位数        int j=0; // 十位数        int k=0; // 个位数        int t=0; // 计数器        for (i = 1 ; i <= 4 ; i++){            for (j = 1 ; j <= 4 ; j++){                for (k = 1 ; k <=4 ; k++){                    if (i != j && j != k && k != i){                        t += 1 ;                        system.out.print(i*100+j*10+k+"--");                    }                }            }        }        system.out.println();        system.out.println("t="+t);    }}

3、递归常见算法

基于递归思想的各种计算方法实现。

public class process11 {    public static void main(string[] args) {        system.out.prin陕西学前师范tln(getsumone(100));        system.out.println(getsumtwo(30));        system.out.println(getsumthree(5));    }    /**     * 使用递归的方式计算1+2+...+100     */    public static int getsumone (int i){ // 传入100        int sum ;        if (i == 1){            return 1 ;        }        el {            sum = i + getsumone(i - 1) ;        }        return sum ;   童年好句 }    /**     * 一列数的规则如下: 1、1、2、3、5、8、13、21、34...     * 求第30位数是多少, 用递归算法实现     */    public static int getsumtwo (int i){ // 传入第几位数下标        if (i <= 0){            return 0 ;        } el if (i == 1 || i == 2){ // 处理前面2位的1,1            return 1 ;        } el { // 当前位数是前两位之和            return getsumtwo(i - 1) + getsumtwo(i - 2) ;        }    }    /**     * 1*2*3*...*100 递归计算阶乘     */    public static int getsumthree (int i){        if (i == 1){            return i ;        } el {            return i * getsumthree (i - 1) ;        }    }}

本文发布于:2023-04-04 05:50:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/308eb1872a127491cb08f0a8ebe4bc18.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java基础算法和结构(详解java常用算法).doc

本文 PDF 下载地址:java基础算法和结构(详解java常用算法).pdf

标签:语句   条件   递归   分支
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图