java学习之路-程序逻辑控制

目录

1.分支结构

1.1 if语句

栗子

判断奇数还是偶数

判断一个年份是否为闰年

1.2switch语句

栗子

2. 循环结构

2.1while 循环

栗子

2.2break和continue

break

continue

2.3for循环

基本语法

栗子

2.4 do while 循环

3.输入输出

3.1输出

 3.2从键盘输入

栗子

3.3猜数字游戏实现

4.练习

4.1 判定一个数字是否是素数

4.2求两个数的最大公约数

4.3求水仙花数

4.4求二进制的个数


1.分支结构

1.1 if语句

 if(布尔表达式){
    // 语句
}

如果布尔表达式结果为true,执行if中的语句,否则不执行。

 if(布尔表达式){
    // 语句1
 }else{
    // 语句2
 }

如果布尔表达式结果为true,则执行if中语句,否则执行else中语句。

栗子

判断奇数还是偶数

 int num = 10;
 if (num % 2 == 0) {
    System.out.println("num 是偶数");
 } else {
    System.out.println("num 是奇数");
 }

判断一个年份是否为闰年

     int year = 2000;
 if (year % 100 == 0) {
    // 判定世纪闰年
    if (year % 400 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
 } else {
    // 普通闰年
    if (year % 4 == 0) {
        System.out.println("是闰年");
    } else {
        System.out.println("不是闰年");
    }
 }

1.2switch语句

基本语法

 
 switch(表达式){
    case 常量值1:{
        语句1;
        [break;]
        }
    case 常量值2:{
        语句2;
        [break;]
        }
    default:{
        内容都不满足时执行语句;
        [break;]
        }       
}

执行流程:

1. 先计算表达式的值

2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束

3. 当表达式的值没有与所列项匹配时,执行default

栗子

 int day = 1;
 switch(day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("输入有误");
        break;
 }

【注意事项】

多个case后的常量值不可以重复

switch的括号内只能是以下类型的表达式:

         基本类型:byte、char、short、int,注意不能是long类型

        引用类型:String常量串、枚举类型

2. 循环结构

2.1while 循环

语法格式

 while(循环条件){
循环语句;
 }

循环条件为 true, 则执行循环语句; 否则结束循环

栗子

        //分别计算100内所有奇数、偶数的和
        int i = 1;
        int sumodd = 0;
        int sumeven = 0;
        while(i <= 100)
        {
            //首先判断是奇数
            //然后进行累加求和。
            if(i % 2 == 0)//偶数对二求余必为0
            {
                sumeven += i;
            }
            else
            {
                sumodd += i;
            }
            i ++;//每轮i都要进行++
        }
        //求和完成,打印数据
        System.out.println("偶数和 = "+ sumeven);
        System.out.println("奇数和 = "+ sumodd);

注意事项

1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

 int num = 1;
 while (num <= 10); {//这里有个分号
    System.out.println(num);
    num++;
 }
 
// 执行结果
[无任何输出, 程序死循环]

2.2break和continue

break

功能是让循环提前结束.

        //区分break和continue
        int j = 1;
        while(j <= 5)
        {
            if(j == 2)
            {
                break;//当j=2时候,
            }
            System.out.println(j); //这里只会输出1就结束了。
        }
        

continue

continue 的功能是跳过这次循环, 立即进入下次循环.

        int j = 1;
        while(j <= 5)
        {
            if(j == 2)
            {
                continue;//会进入死循环,永远停留在j=2
            }
            System.out.println(j);
        }

2.3for循环

基本语法

for(表达式①;布尔表达式②;表达式③){
    表达式④;
 }

表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次

表达式2: 循环条件,满则循环继续,否则循环结束

表达式3: 循环变量更新方式

栗子

计算 1! + 2! + 3! + 4! + 5!

int sum = 0;
 for (int i = 1; i <= 5; i++) {
    int tmp = 1;
    for (int j = 1; j <= i; j++) {
        tmp *= j;
    }
    sum += tmp;
 }
 System.out.println("sum = " + sum);

2.4 do while 循环

【基本语法】

do{
    循环语句;
 }while(循环条件);

先执行循环语句, 再判定循环条件,循环条件成立则继续执行,否则循环结束。

do while 循环最后的分号不要忘记

3.输入输出

3.1输出

基本语法

System.out.println(msg);            // 输出一个字符串, 带换行
System.out.print(msg);              // 输出一个字符串, 不带换行
System.out.printf(format, msg);     // 格式化输出

println 输出的内容自带 \n, print不带 \n

printf 的格式化输出方式和 C 语言的 printf 是基本一致的.

System.out.println("hello world");
 
int x = 10;
 System.out.printf("x = %d\n", x)

 3.2从键盘输入

使用 Scanner 读取字符串/整数/浮点数

 import java.util.Scanner;  // 需要导入 util 包
 Scanner sc = new Scanner(System.in);
 sc.close(); // 注意, 要记得调用关闭方法

栗子

       import java.util.Scanner;  // 需要导入 util 包
         Scanner sc = new Scanner(System.in);
         //接下来就可以使用输入了
       /* System.out.println("请输入你的id");
        String name = scan.next();//next只读有效的字符,遇到空格、tab、enter键,那么就会停止结束。
        System.out.println(name);*/

        //输入字符串
        /*ystem.out.println("请输入你的id");
        String name = scan.nextLine();//nextLine 输入字符串,遇到enter才结束
        System.out.println(name);*/

        //输入整型
        /*System.out.println("请输入你的年龄");
        int ax = scan.nextInt();//只会录入空格前的,遇到空格、tab、enter键就停止了
        System.out.println(ax);

        //也可以进行循环输入
        //循环结束用ctrl+d
        while(scan.hasNextInt())//就是如果有数字的输入就不会停止
            //想停止两方法,ctrl+d,还有输入其他字符,不是数字的内容。
        {
            int age = scan.nextInt();
            System.out.println(age);
        }
        scan.close();//这个就是类似于文件操作的关闭,有打开那就有关闭。*/

3.3猜数字游戏实现

游戏规则:

系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低 了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了" .

import java.util.Random;
 import java.util.Scanner;;
 
class Test {
    public static void main(String[] args) {
        Random random = new Random(); // 默认随机种子是系统时间
        Scanner sc = new Scanner(System.in);
        int toGuess = random.nextInt(100);
        // System.out.println("toGuess: " + toGuess);
        while (true) {
            System.out.println("请输入要输入的数字: (1-100)");
            int num = sc.nextInt();
            if (num < toGuess) {
                System.out.println("低了");
            } else if (num > toGuess) {
                System.out.println("高了");
            } else {
                System.out.println("猜对了");
                break;
            }
        }
        sc.close();
    }
 }

4.练习

4.1 判定一个数字是否是素数

有两方法
其一,就是通过循环一个数一个数的对x求余,当余数等于0,那么就不是素数,只有大于开根号数时候才是
比如16 ,可以写成1*16 2*8 4*4 ,其中2小于16开根号,那么就不是素数
        // i = 2; //从二开始,因为每个数都能被1整除,所以1毫无意义
        for(i = 2 ;i <= Math.sqrt(num) ; i++ )
        {
            if(num % i == 0 ){
                break;//不是素数,1和2不是素数
            }
        }
        if( i > Math.sqrt(num)){ //如果i大于Math.sqrt(num),那么就是素数
            System.out.println(num + "是素数");
        }

4.2求两个数的最大公约数

        //就是用转转相除法比如 18 和 24 最大公约数就是6
        //过程,24 % 18 = 6,然后下一步就是进行判断,如果18 % 6 = 0,那么6就是最大公约数
        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = a % b;
        while( c != 0)
        {
            a = b;//这里是防止a<b吧
            b = c;
            c = a % b;

        }
        System.out.println(b);

4.3求水仙花数

        //栗子 i= 153 = 1^3+5^3+3^3
        //先求这个数是几位数
        //然后再次循环求出这个数的每一位数取出来
        /*for(int i = 1 ; i <= 999999 ;i ++)
        {
            int count = 0;
            int tmp = i;
            while(tmp != 0){
                count ++;
                //一次除去10,每次去掉一位数
                tmp = tmp / 10;
            }
            //计算完再进行重新赋值
            tmp = i ;
            int sum = 0;//用于求和
            while(tmp != 0){

                sum+=Math.pow(tmp % 10,count);//这个函数就是传两个参数,然后进行相乘,           (2,3)=2*3
                tmp /= 10;//每次去掉最后一位
            }
            if(sum == i)
            {
                System.out.println(i);
            }
        }

4.4求二进制的个数

        //求二进制的个数
        int ax =scan.nextInt();
        int count = 0;//用来记录二进制中1的个数
        //用求二进制的方法来求1的个数;对2取余,余1的话就说明二进制中有个1,然后除以二,在取余,直到除2之后为0
        while (ax > 0)
            {
                if (ax%2==1)
                {
                    count++;
                    ax /= 2;
                }
                else
                {
                    ax /= 2;
                }
            }

        System.out.println(count);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的光纤通信系统的实现的优化技巧与方法

逻辑电路基本框架回顾 跨时钟域同步技术 读写操作相互独立时钟域 A 和 B 不需要一致的相位由专门逻辑控制读写操作的切换 高速数据的乒乓缓存技术

SimpleDateFormat类 --java学习笔记

SimpleDateFormat 代表简单日期格式化&#xff0c;可以用来把日期对象、时间毫秒值格式化成我们想要的形式 常见构造器和方法&#xff1a; pattern 代表需要应用的时间格式—— 时间格式的常见符号&#xff1a; 时间格式的应用举例&#xff1a; import java.text.SimpleDate…

集合系列(二) -List接口详解

一、List简介 List 的数据结构就是一个序列&#xff0c;存储内容时直接在内存中开辟一块连续的空间&#xff0c;然后将空间地址与索引对应。 以下是List集合简易架构图 由图中的继承关系&#xff0c;可以知道&#xff0c;ArrayList、LinkedList、Vector、Stack都是List的四个…

【计算机网络】UDP/TCP 协议

TCP 协议 一、传输层1. 再谈端口号2. 端口号范围划分3. 进程和端口号4. netstat5. pidof 二、UDP 协议1. UDP 协议端格式(报文)2. UDP 的特点3. 面向数据报4. UDP 的缓冲区 三、TCP 协议1. 认识 TCP2. TCP 协议段格式&#xff08;1&#xff09;4 位首部长度&#xff08;2&#…

Android U pipeline-statusbar

Android U - statusbar pipeline 写在前面 Android原生从T开始对SystemUI进行MVVM改造&#xff0c;U上状态栏部分进行了修改&#xff1b;第一次出现修改不会删除原有逻辑&#xff0c;而是两版并行&#xff0c;留给其他开发者适配的时间&#xff1b;在下一个大版本可能会删除原…

Java获取视频封面图,利用FFmpegFrameGrabber获取视频封面图

依赖 <dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.9</version></dependency>传入视频流获取图片byte /*** 获取视频截图** param frameNumber 视频的指定帧数* param …

Ubuntu查看ros版本-linux查看ros版本

使用ros带的rosversion命令即可查看自己的ros版本&#xff1a; rosversion -d

双指针算法_复写零

题目&#xff1a; 给一个固定长度的数组arr&#xff0c;将数组中出现的每一个0都复写一遍&#xff0c;并且将其余元素都往右移动 且不要再超过数组长度的位置写入元素&#xff0c;在数组上直接修改 示例&#xff1a; 双数组模拟操作&#xff1a; 从示例来看&#xff0c;因为…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言———— 主从&#xff08;Master-Slave&#xff09;DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

视频素材在哪里找?5个无版权视频素材网站

今天我再给大家介绍几个视频素材在哪里找&#xff0c;希望能帮你的短视频创作更加顺手&#xff1a; 蛙学网&#xff1a; 蛙学网是国内的一个视频素材平台&#xff0c;适合做短视频的朋友。这里的素材非常多&#xff0c;涵盖了各种风格和主题。更新速度也很快&#xff0c;能够帮…

Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

Python笔记|字符串的转义

重新梳理一遍python的基础知识 除了数字&#xff0c;Python 还可以操作字符串。字符串有多种表现形式&#xff0c;用单引号&#xff08;……&#xff09;或双引号&#xff08;"……"&#xff09;标注的结果相同 。反斜杠 \ 用于转义&#xff1a; >>>spam e…

QT网络编程之实现TCP客户端和服务端

推荐一个不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;内容全面&#xff0c;作为入门科普和学习提升都不错&#xff0c;分享一下给大家&#xff1a;前言https://www.captainbed.cn/ai 一.QT5.12实现TCP客户端和服务端功能 1.QT中实现TCP通信主要用到了以下类&…

weblogic CVE-2023-21839详细复现

1、本次复现使用vulhub的靶场 切换到靶场的目录下&#xff0c;用docker -compose up -d启动靶场 使用docker-compose ps -a查看靶场的端口 2、访问开启的环境 3、准备工作都做好之后开始复现 &#xff08;1&#xff09;开启JNDIExploit 工具地址&#xff1a;GitHub - WhiteH…

拌合楼内部管理系统开发(一)立个flag,开始做准备

前言&#xff1a;项目背景情况介绍 公司有意开发一套适合拌合楼的内部管理系统给到客户使用&#xff0c;接触过一家拌合楼行业内号称标杆的企业&#xff0c;去过参观学习的都觉得他们软件好用&#xff0c;但是从软件开发角度看&#xff0c;就是crud钉钉机器人无人值守。虽然公司…

开源绘图工具 PlantUML 入门教程(常用于画类图、用例图、时序图等)

文章目录 一、类图二、用例图三、时序图 一、类图 类的UML图示 startuml skinparam classAttributeIconSize 0 class Dummy {-field1 : String#field2 : int~method1() : Stringmethod2() : void } enduml定义能见度&#xff08;可访问性&#xff09; startumlclass Dummy {-f…

基于ssm+layui的图书管理系统

基于ssmlayui的图书管理系统 账户类型分为&#xff1a;管理员&#xff0c;用户管理员私有功能用户私有功能公共功能技术栈功能实现图 视频演示 账户类型分为&#xff1a;管理员&#xff0c;用户 图书管理系统主要登录账户类型为管理员账户与用户账户 管理员私有功能 账户管理…

如何压缩图片文件大小?教大家几种方法

当图片文件较大时&#xff0c;图片压缩可以有效的缩小图片kb&#xff0c;从而使图片储存起来更加方便&#xff0c;也可以解决上传时图片大小被限制的问题&#xff0c;那么我们有什么方法可以简单快速的将图片大小压缩呢&#xff1f;下面就来给大家分享几个如何修改照片大小kb的…

VS2022开发上位机流程

1、生成串口调试助手的主要控件 2、生成串口对象 3、书写代码 3.1 串口的选择 跳转到图形化界面&#xff0c;然后双击空白位置&#xff0c;会自动生成From1_Load,此函数的作用是会更新串口的选择&#xff0c;然后加入代码&#xff0c;combox控件就可以识别串口 /* 新增自定义…

windows系统版本是win11 运行程序显示windows版本是win10,

在Windows 11系统中运行程序时显示的Windows版本是Windows 10&#xff0c;这种现象可能是由以下几个原因导致的&#xff1a; 程序兼容性问题&#xff1a; 某些程序可能尚未更新以识别Windows 11操作系统&#xff0c;因此它们仍然报告系统为Windows 10。程序读取的是遗留的系统信…
最新文章