Java控制结构

控制结构

  • 程序流程控制介绍

在这里插入图片描述

顺序控制

在这里插入图片描述

分支控制if-else

单分支

在这里插入图片描述

案例演示

在这里插入图片描述

01:

import java.util.Scanner;
public class IfWorkDemo
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.println("input your age");int age = myScanner.nextInt();if (age > 18){System.out.println("Your age beyond 18 ,you shoule  be responsible  to your action ");}}
}

流程图

在这里插入图片描述

双分支

在这里插入图片描述

案例演示

在这里插入图片描述

01:

import java.util.Scanner;
public class IfWorkDemo01
{public static void main(String [] args){Scanner myScanner = new Scanner(System.in);int age = myScanner.nextInt();System.out.println("input your age");if (age > 18){System.out.println("Your age beyond 18 ,you shoule  be responsible  to your action ")}else{System.out.println("You are not old no enough to let you off this time");}}
}

流程图

在这里插入图片描述

单分支和双分支练习题

01:

public class PracticeWorkDemo
{public static void main(String [] args){int x = 7;int y = 4;if (x > 5){if (y > 5){System.out.println(x+y);}System.out.println("okokok");}else{System.out.println("x is "+x);}}
}

OUTPUT:

okokok

在这里插入图片描述

02:

public class IfWorkDemo
{public static void main(String[] args){double d1 = 34.5;double d2 = 2.6;if (d1 > 10.0 && d2 < 20.0){System.out.println("两个数之和 = "+(d1+d2);}}
}

03:

public class SumWorkDemo
{public static void main(String[] args){int num1 = 10;int num2 = 5;int sum = num1+num2;if (sum % 3==0 && sum % 5==0){System.out.println("ok");}else{System.out.println("no");}}
}

04:

import java.util.Scanner;
public class YearWorkDemo
{public static void main(String[] args){Scaneer myYear = new Scanner(System.in);int year = myYear.nextInt();if ((year %4==0 && year %100 !=0 )|| year %400 ==0){System.out.println("ok");}else{System.out.println("no");}}
}

多分支

在这里插入图片描述

流程图

在这里插入图片描述

案例演示

在这里插入图片描述

import java.util.Scanner;
public class MaWorkDemo
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);int score = myScanner.nextInt();if (score >= 1 && score <= 100){   if (score == 100){System.out.println("信用极好");}else if (score > 80 && score <= 99){System.out.println("信用优秀");}else if (score >=60 && score <= 80){System.out.println("信用一般");}else{System.out.println("信用不及格");}}else{System.out.println("Input is Error");}}
}

小练习

01:

boolean b = true;
if (b==false)
{System.out.println("a");
}
else if (b)
{System.out.println("b");
}
else if (!b)
{System.out.println("c");
}
else 
{System.out.println("d");
}//output = b

02:

boolean b = true;
if (b=false)
{System.out.println("a");
}
else if (b)
{System.out.println("b");
}
else if (!b)
{System.out.println("c");
}
else 
{System.out.println("d");
}//output = c

嵌套分支

在这里插入图片描述

应用案例

在这里插入图片描述

01:

import java.util.Scanner;
public class MatchWorkDemo
{public static void main(String [] args){Scanner myScanner = new Scanner(System.in);System.out.println("Please input score");double score = myScanner.nextDouble();if (score > 8.0){System.out.println("Please input gender");char gender = myScanner.next().charAt(0);if (gender == '男'){System.out.println("Enter the men's division");}else if (gender== '女'){System.out.println("Enter the women's division");}else {System.out.println("Input Error");}}else{System.out.println("cup tie");}}
}

在这里插入图片描述

代码略。

switch分支结构

在这里插入图片描述

流程图

在这里插入图片描述

案例演示

在这里插入图片描述

01:

import java.util.Scanner;
public class SwitchWorkDemo
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.println("Please input a-g");char c1 = myScanner.next().charAt(0);switch(c1){case 'a':System.out.println("Today is monday");break;case 'b':System.out.println("Today is Tuesday");break;case 'c':System.out.println("Today is Wednesday");break;//......default :System.out.println("Input Error");}}
}

细节讨论

在这里插入图片描述

  • 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成相互比较的类型,比如输入的是字符,而常量是int

01:

public class SwitchWorkDemo
{public static void main(String[] args){char c = 'a';switch(c){case 'a':System.out.println("ok1");break;//correct char -> int case 20:System.out.println("ok2");break;//error String 无法转成 charcase 'hello':System.out.println("ok3");break;default:System.out.println("ok4");}}
}

02:

public class SwitchWorkDemo
{public static void main(String[] args){String  c = "a";switch(c){case "b":System.out.println("ok1");break;case "20":System.out.println("ok2");break;//error String 无法转成 intcase 20:System.out.println("ok3");break;default:System.out.println("ok4");}}
}
  • switch(表达式)中表达式的返回值必须是(byte,short,int,char,enum[枚举],String)

01:

public class SwitchWorkDemo
{public static void main(String[] args){double c = 1.1;switch(c){//error switch(表达式)中表达式的返回值必须是(byte,short,int,char,enum[枚举],String)case 1.1:System.out.println("ok1");break;default:System.out.println("ok2");}}
}
  • case子句中的值必须是常量(1,‘a’)或者是常量表达式,而不能是变量
 class SwitchWork
{public static void main(String[] args){char c = 'a';char c2 = 'c';switch(c){//error case子句中的值必须是常量(1,'a')或者是常量表达式,而不能是变量case c2:System.out.println("ok");break;default:System.out.println("ok2");}}
}
  • default是可选的,就是说,可以没有default。如果没有default子句,有没有匹配任何常量,则没有输出

  • break语句用来在执行完一个case分支后使程序跳出switch语句块,如果没有写break,程序会顺序执行到switch结尾

public class SwitchDemo {public static void main(String[] args){char c = 'b';char c2 = 'c';switch(c){case 'b'://没有break,穿透了System.out.println("ok1");case 'c':System.out.println("ok2");default:System.out.println("ok3");}}}

结果如下:

在这里插入图片描述

小练习

在这里插入图片描述

01:

import java.util.Scanner;
public class ConvertWork
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);System.out.println("Please input a-e");char c1 = myScanner.next().charAt(0);switch(c1){case 'a':System.out.println("A");break;case 'b':System.out.println("B");break;case 'c':System.out.println("C");break;case 'd':System.out.println("D");break;case 'e':System.out.println("E");break;default :System.out.println("Input Error");}}
}

02:

public class SwitchDemo
{public static void main(String[] args){double score = 88.5;if (score >=0 && score <=100){switch((int)(score/60)){case 0:System.out.println("不合格");break;case 1:System.out.println("合格");break;// default://     System.out.println("Input Error");}}else{System.out.println("Input Error");}}
}

03:

import java.util.Scanner;
public class SwitchDemo
{public static void main(String [] args){Scanner myScanner = new Scanner(System.in);System.out.println("Input month");int month = myScanner.nextInt();switch(month){case 3:case 4:case 5:System.out.println("springtime");break;case 6:case 7:case 8:System.out.println("summer");break;case 9:case 10:case 11:System.out.println("autumn");case 1:case 2:case 12:System.out.println("winter");default :System.out.println("Input Error");}}
}

switch和if的比较

在这里插入图片描述

先死后活,化繁为简

for循环控制

在这里插入图片描述

流程图

在这里插入图片描述

使用细节

在这里插入图片描述

小练习

在这里插入图片描述

01:

public class ForExercise
{public static void main(String[] args){int cnt = 0;int sum = 0;int start = 1;int end = 100;int num = 9;for (int i = start;i<=end;i++){if (i % num==0){System.out.println("i = "+i);cnt++;sum+=i;}}System.out.println("cnt = "+cnt);System.out.println("sum = "+sum);}
}

02:

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

while循环控制

在这里插入图片描述

01:

public class WhileWorkDemo
{public static void main(String[] args){int i = 1;while(i <= 10){System.out.println("i = "+i);i++;}}
}

流程图

在这里插入图片描述

注意事项和细节说明

在这里插入图片描述

小练习

在这里插入图片描述

01:

public class WhileWork
{public static void main(String[] args){int i = 1;while(i <= 100){if (i%3==0){System.out.println(i);//i++;//easy error}i++;}}
}

02:

public class WhileWork
{public static void main(String[] args){int i = 40;while(i<=200){if (i %2==0){System.out.println(i);}i++;}}
}

do…while循环控制

在这里插入图片描述

流程图

在这里插入图片描述

01:

public class DoWhileWork
{public static void main(String[] args){int i = 1;do{System.out.println(i);i++;}while(i <= 10);System.out.println("continue");}
}

注意事项和细节说明

在这里插入图片描述

小练习

在这里插入图片描述

01:

public class DoWhileWork
{public static void main(String[] args){int cnt = 0;int i = 1;do{if (i % 5==0 && i%3!=0){System.out.println(i);cnt++;}i++;}while(i<=200);System.out.println(cnt);}
}

02:

import java.util.Scanner;
public class DoWhileWork
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);char answer = ' ';do{System.out.println("老韩使用五连鞭");System.out.println("老韩问:还钱吗?y/n");answer = myScanner.next().charAt(0);System.out.println("His ansmer = "+answer);}while(answer!='y');System.out.println("李三还钱了");}
}

多重循环控制

在这里插入图片描述

01:

public class ForWorkDemo
{public static void main(String[] args){for (int i = 0;i<2;i++)	for (int j = 0;j<3;j++){System.out.println("i = "+i+" j = "+j);}}
}

结果如下:

在这里插入图片描述

小练习

在这里插入图片描述

01:

import java.util.Scanner;
public class ForWorkDemo
{public static void main(String[] args){Scanner myScanner = new Scanner(System.in);double sumbig = 0;for (int i = 1;i<=3;i++){double sum = 0;int cnt = 0;for (int j = 1;j<=5;j++){System.out.println("Please input 第"+i+"个班级的第"+j+"个学生");double score = myScanner.nextDouble();sum+=score;if (score >= 60){cnt++;}}System.out.println("第"+i+"个班级及格的学生有"+cnt+"个");System.out.println("第"+i+"个班级的平均分为:" + sum/5);sumbig+=(sum/5);}System.out.println("bigsum = "+(sumbig/3));}
}

02:

代码略。

大练习

在这里插入图片描述

化繁为简

01:

public class PrintWorkDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){System.out.println("*****");
//            *****
//            *****
//            *****
//            *****
//            *****}}
}

02:

public class PrintWorkDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){for (int j = 1;j<=i;j++){System.out.print("*");}System.out.println();}}
}//*
//**
//***
//****
//*****

03:

public class PrintWorkDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){for (int k = 1;k<=5-i;k++){System.out.print(" ");}for (int j = 1;j<=2*i-1;j++){System.out.print("*");}System.out.println();}}
}//    *
//   ***
//  *****
// *******
//*********

04:

public class PrintWorkDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){for (int k = 1;k<=5-i;k++){System.out.print(" ");}for (int j = 1;j<=2*i-1;j++){if (i!=5 && j==1 || j==2*i-1)System.out.print("*");else if (i!=5)System.out.print(" ");elseSystem.out.print("*");}System.out.println();}}
}//    *
//   * *
//  *   *
// *     *
//*********

跳转控制语句break

在这里插入图片描述

  • Math.random()

返回带正号的double值,该值大于等于0.0,且小于1.0

01:

public class RandomBreakWork {public static void main(String[] agrs){int cnt = 0;while(true){cnt++;int flag = (int)(Math.random()*100)+1;if (flag==97) break;}System.out.println(cnt);}
}

基本介绍和流程图

在这里插入图片描述

注意事项和细节说明

在这里插入图片描述

01:

public class RandomBreakWork {public static void main(String[] agrs){label1:for (int j = 0;j<4;j++){label2:for (int i = 0;i<10;i++){if (i == 2) break;System.out.println("i = "+i);}}}
}

结果如下:

在这里插入图片描述

02:

public class RandomBreakWork {public static void main(String[] agrs){label1:for (int j = 0;j<4;j++){label2:for (int i = 0;i<10;i++){if (i == 2) break label1;System.out.println("i = "+i);}}}
}

结果如下:

在这里插入图片描述

小练习

在这里插入图片描述

01:

public class RandomBreakWork {public static void main(String[] agrs){int sum = 0;for (int i = 1;i<=100;i++){sum+=i;if (sum > 20){System.out.println(i);break;}}}
}//------------------------------------------public class RandomBreakWork {public static void main(String[] agrs){int flag = 0;int sum = 0;for (int i = 1;i<=100;i++){sum+=i;if (sum > 20){flag = i;break;}}System.out.println(flag);}
}

02:

tip:

  • 字符串的内容比较使用的方法equals
public class StringTestDemo
{public static void main(String[] args){String name = "Tom";System.out.println(name.equals("Jack"));System.out.println("jack".equals(name));//[推荐,可以避免空指针]}
}
import java.util.Scanner;public class RandomBreakWork {public static void main(String[] agrs){Scanner myScanner = new Scanner(System.in);String name = "";String passwd = "";int chance = 3;for (int i = 1;i<=3;i++){System.out.println("Please input name");name = myScanner.next();System.out.println("Please input passwd");passwd = myScanner.next();//compareif("丁真".equals(name) && "666".equals(passwd)){System.out.println("ok");break;}chance--;System.out.println("你还有"+chance+"次机会");}}
}

跳转控制语句continue

流程图在这里插入图片描述

在这里插入图片描述

01:

public class RandomBreakWork {public static void main(String[] agrs){int i = 1;while(i <= 4){i++;if (i==2){continue;}System.out.println("i = "+i);
//         i = 3
//         i = 4
//         i = 5}}
}

案例说明

01:

public class RandomBreakWork {public static void main(String[] agrs){label1:for (int j = 0;j<2;j++){label2:for (int i = 0;i<10;i++){if (i==2){continue;}System.out.println("i = "+i);}}}
}

结果如下:

i = 0
i = 1
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9
i = 0
i = 1
i = 3
i = 4
i = 5
i = 6
i = 7
i = 8
i = 9

02:

public class RandomBreakWork {public static void main(String[] agrs){label1:for (int j = 0;j<2;j++){label2:for (int i = 0;i<10;i++){if (i==2){continue label1;}System.out.println("i = "+i);}}}
}

结果如下:

i = 0
i = 1
i = 0
i = 1

跳转控制语句return

在这里插入图片描述

01:

public class ReturnDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){if (i==3){System.out.println(i);break ;}System.out.println("hello world");}System.out.println("go on...");}
}

结果如下:

hello world
hello world
3
go on…

02:

public class ReturnDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){if (i==3){System.out.println(i);continue;}System.out.println("hello world");}System.out.println("go on...");}
}

结果如下:

hello world
hello world
3
hello world
hello world
go on…

03:

public class ReturnDemo {public static void main(String[] args){for (int i = 1;i<=5;i++){if (i==3){System.out.println(i);return;}System.out.println("hello world");}System.out.println("go on...");}
}

结果如下:

hello world
hello world
3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/309122.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core Configuration源码探究

前言上篇文章我们演示了为Configuration添加Etcd数据源&#xff0c;并且了解到为Configuration扩展自定义数据源还是非常简单的&#xff0c;核心就是把数据源的数据按照一定的规则读取到指定的字典里&#xff0c;这些都得益于微软设计的合理性和便捷性。本篇文章我们将一起探究…

最大堆实现优先队列

最大堆实现优先队列 头文件 #include "heap_sort.h" #include "stdexcept" #include <iostream> class MaxHeapPriorityQueue { public:int heap_size; private:int capacity;int *array;void increase_key(int key,int index); public:void inser…

面试官:你说你喜欢研究新技术,那么请说说你对 Blazor 的了解

阅读本文大概需要 1.5 分钟。最近在几个微信 .NET 交流群里大家讨论比较频繁的话题就是这几天自己的面试经历。面试官&#xff1a;“你刚说你喜欢研究新技术&#xff0c;那么你对 Blazor 了解多少&#xff1f;”作为一位专注于 .NET 开发的软件工程师&#xff0c;你好意思说你对…

Java变量

变量 ​ 变量是程序的基本组成单位 变量的介绍 概念 变量相当于内存中一个数据存储空间的表示&#xff0c;你可以把变量看做是一个房间的门牌号&#xff0c;通过门牌号我们可以找到房间&#xff0c;而通过变量名可以访问到变量(值)。 01&#xff1a; class Test {public s…

将k个有序链表合并成一个有序链表

将k个有序链表合并成一个有序链表 这里以从小到大排序为例&#xff0c; 时间复杂度为O&#xff08;nlgk&#xff09;。 特点&#xff1a;利用最小堆来完成k路归并 思路&#xff1a;取每个列表中的第一个元素&#xff0c;并将其放在最小堆中。与每个元素一起&#xff0c;必须跟…

[Student.Achieve] 学生教务管理系统开源

&#xff08;源自&#xff1a;https://neters.club&#xff09;一觉醒来Github改版了&#xff0c;我个人还是挺喜欢的????。还有两个月就是老张做开源两周年了&#xff0c;时间真快&#xff0c;也慢慢的贡献了很多的开源作品&#xff0c;上边的是主要的七个作品&#xff0c…

d叉堆实现优先队列

d叉堆实现优先队列 时间复杂度 dlog&#xff08;d,n) #include <stdexcept> #include <iostream> class DForkHeapPriorityQueue { private:int capacity;int *array;int d;int heap_size; public:DForkHeapPriorityQueue(int capacity,int d);DForkHeapPriority…

.NET Core HttpClient源码探究

前言在之前的文章我们介绍过HttpClient相关的服务发现&#xff0c;确实HttpClient是目前.NET Core进行Http网络编程的的主要手段。在之前的介绍中也看到了&#xff0c;我们使用了一个很重要的抽象HttpMessageHandler&#xff0c;接下来我们就探究一下HttpClient源码&#xff0c…

Young氏矩阵

Young氏矩阵 利用堆思想实现Young氏矩阵 #include <iostream> class YoungTableau {private:int *array;int row;int column;int heap_size; public:YoungTableau

Java 多线程:线程优先级

1 优先级取值范围 Java 线程优先级使用 1 ~ 10 的整数表示&#xff1a; 最低优先级 1&#xff1a;Thread.MIN_PRIORITY 最高优先级 10&#xff1a;Thread.MAX_PRIORITY 普通优先级 5&#xff1a;Thread.NORM_PRIORITY 2 获取线程优先级 public static void main(String[]…

《Unit Testing》1.1 -1.2 单元测试的目的

本系列是《Unit Testing》 一书的读书笔记 精华提取。书中的例子 C# 语言编写&#xff0c;但概念是通用的&#xff0c;只要懂得面向对象编程就可以。 单元测试当前的状态目前&#xff0c;在&#xff08;美国的&#xff09;大部分公司里&#xff0c;单元测试都是强制性的。生产…

算法-排序-快速排序(包含多种快速排序)

快速排序 特点&#xff1a;原址排序&#xff0c;最坏的时间复杂度O&#xff08;n^2) 平均时间复杂度O&#xff08;nlgn&#xff09; 比归并排序系数常数项小 不稳定 底部有最坏时间复杂度为Ω(nlgn)的快速排序地址 void quick_sort(int *array,int start,int end); int parti…

Java Exception

Exception 异常捕获 将代码块选中->ctrlaltt->选中try-catch 01: public class Exception01 {public static void main(String[] args) {int n1 10;int n2 0;try {int res n1/n2;} catch (Exception e) { // e.printStackTrace();System.out.println(e.…

《Unit Testing》1.3 使用覆盖率指标来度量测试套件的好坏

使用覆盖率来度量测试套件&#xff08;Test Suite&#xff09;的质量有两种比较流行的测试覆盖率的度量方法&#xff1a;代码覆盖率分支覆盖率覆盖率度量会显示一个测试套件&#xff08;Test Suite&#xff09;会执行多少代码&#xff0c;范围从 0 至 100%。除了上述两种方法之…

对区间的模糊排序

对区间的模糊排序 算法导论第三版第二部分7-6题 Interval find_intersection(vector<Interval> &array,int start,int end) {int random random_include_left_right(start,end);Interval key array[end];array[end] array[random];array[random] key;key arra…

Linux创始人:v5.8是有史以来最大的发行版之一

导语Linux v5.8已经修改了所有文件的20&#xff05;&#xff0c;是迄今为止变化最大的一次发行版。正文Linux创始人Linus Torvalds表示&#xff1a;Linux内核5.8版是“我们有史以来最大的发行版之一”。如果一切顺利&#xff0c;Linux v5.8稳定版应该在2020年8月的某个时候出现…

算法-排序-计数排序(包含对非负数和整数的排序)

计数排序 时间复杂度O&#xff08;n&#xff09; 特点&#xff1a;稳定 限制&#xff1a;对0到maximum中的数进行排序 maximum要求&#xff0c;比数组中最大值大或者相等 有拓展版本的计数排序&#xff08;在文章基数排序内&#xff09; 基数排序链接 void counting_sort(int…

[高等数学]这你不背?

求导及求微分的基本公式: 泰勒中值定理: 麦克劳林公式: 不定积分公式: 凑微分: 第二类换元积分法常用的三种情况: 求高阶导数的几个公式: 二阶常系数非齐次线性微分方程的特解: 排列组合公式: C的计算&#xff1a; 下标的数字乘以上标的数字的个数,且每个数字都要-1.再除以上标…

怎么开会才不浪费时间?

这里是Z哥的个人公众号每周五11&#xff1a;45 按时送达当然了&#xff0c;也会时不时加个餐&#xff5e;我的第「148」篇原创敬上大家好&#xff0c;我是Z哥&#xff0c;先祝大家端午节日快乐。节日期间就发篇比较短的文章吧。人在职场混&#xff0c;开会应该是本职工作之外花…