java学习03 判断和循环

一 流程控制语句

1.流程控制语句分类

顺序结构

判断和选择结构(if, switch)

循环结构(for, while, do…while)

2. 顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

顺序结构执行流程图:

package com.itheima.logicoperator;

public class LogicoperatorDemo2 {
    public static void main(String[] args) {
        int a=10;
        int b=10;
        boolean result = ++a <5 && ++b<5;
        System.out.println(result);
        System.out.println(a);
        System.out.println(b);
    }
}

二 判断语句:if语句

1.格式1

if (关系表达式) {
    语句体;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

练习

//需求:键盘录入女婿酒量,如果大于2斤,老丈人给出回应,反之不回应

package com.itheima.ifdemo;

import java.util.Scanner;

public class ifDemo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入女婿的酒量");
        int wine=sc.nextInt();
        if(wine>2){
            System.out.println("yes");
        }
    }
}

 

  1. 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

  2. 如果大括号中的语句体只有一条,那么大括号可以省略不写

    如果大括号省略了,那么if只能控制距离他最近的那一条语句。

2.格式2

格式:
if (关系表达式) {
    语句体1;	
} else {
    语句体2;	
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

练习

需求:键盘录入一个整数,表示身上的钱,
如果大于等于100块,就是网红餐厅。
否则,就吃经济实惠的沙县小吃。 

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入身上的钱");
        int money=sc.nextInt();
        if (money>=100){
            System.out.println("吃餐厅");
        }else{
            System.out.println("吃沙县");
        }
    }
}

 

需求:

在实际开发中,电影院选座也会使用到if判断。

假设某影院售卖了100张票,票的序号为1~100。

其中奇数票号坐左侧,偶数票号坐右侧。

键盘录入一个整数表示电影票的票号。

根据不同情况,给出不同的提示:

如果票号为奇数,那么打印坐左边。

如果票号为偶数,那么打印坐右边。

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test3 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入票号");
        int ticket=sc.nextInt();
        if(ticket>=0&&ticket<=100){  //校验票在0-100之间 
            if(ticket%2==1){
                System.out.println("做左边");
            }else{
                System.out.println("做右边");
            }
        }
    }
}

3.格式3

格式:
if (关系表达式1) {
    语句体1;	
} else if (关系表达式2) {
    语句体2;	
} 
…
else {
    语句体n+1;
}

执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

练习

需求:

小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,

假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数成绩");
        int score=sc.nextInt();
        if(score>0&&score<=100){
            if(score>=95&&score<=100){
                System.out.println("送自行车");
            }else if(score>=90&&score<=94){
                System.out.println("游乐场");
            }else if(score>=80&&score<=89){
                System.out.println("送变形金刚");
            }else{
                System.out.println("干一顿");
            }

        }else{
            System.out.println("成绩不合法");
        }

    }
}

 

需求:
商场都会有VIP的会员制,根据不同的会员会有不同的折扣。
假设商品总价为1000.
键盘录入会员级别,并计算出实际支付的钱。
会员1级:打9折。
会员2级:打8折。
会员3级:打7折,
非会员:不打折,要打也是打骨折。

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) {
        int price=1000;
        Scanner sc=new Scanner(System.in);
        System.out.println("请录入会员级别");
        int vip=sc.nextInt();
        
        if(vip==1){
            System.out.println("实际支付"+(price*0.9));
        }else if(vip==2){
            System.out.println("实际支付"+(price*0.8));
        }else if(vip==3) {
            System.out.println("实际支付" + (price * 0.7));
        }else{
            System.out.println("实际支付"+price);
        }
    }
}

 

三 switch语句

格式

switch (表达式) {
	case 1:
		语句体1;
		break;
	case 2:
		语句体2;
		break;
	...
	default:
		语句体n+1;
		break;
}
  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

 

 

练习

  • 需求:键盘录入星期数,显示今天的减肥活动。

    周一:跑步

    周二:游泳

    周三:慢走

    周四:动感单车

    周五:拳击

    周六:爬山

    周日:好好吃一顿

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test6 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入星期");
        int week= sc.nextInt();
        switch(week){
            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;
        }
    }
}

 

扩展知识

  • default的位置和省略情况

    default可以放在任意位置,也可以省略

  • case穿透

    不写break会引发case穿透现象

    package com.itheima.ifdemo.test;
    
    import java.util.Scanner;
    
    public class Test6 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入星期");
            int week = sc.nextInt();
            switch (week) {
                default:
                    System.out.println("没有这个星期");
                    //break;
                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;
    
            }
        }
    }
    

    这里把break全注释了

  • switch在JDK12的新特性

 

  • switch和if第三种格式各自的使用场景

需要对一个范围进行判断的时候------》f的第三种格式

把有限个数据列举出来,选择其中一个执行------》switch语句

比如:

小明的考试成绩,如果用switch,那么需要写100个case,太麻烦了,所以用if简单。

如果是星期,月份,客服电话中0~9的功能选择就可以用switch

练习

需求:键盘录入星期数,输出工作日、休息日。

(1-5) 工作日,(6-7)休息日。

  l利用case穿透

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test7 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示星期");
        int week = sc.nextInt();
        switch (week) {
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("工作日");
                break;
            case 6:
            case 7:
                System.out.println("休息日");
                break;
            default:
                System.out.println("error");
                break;

        }
    }
}

//这里利用case穿透

利用新特性

package com.itheima.ifdemo.test;

import java.util.Scanner;

public class Test7 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示星期");
        int week = sc.nextInt();
        switch (week) {
            case 1,2,3,4,5 -> System.out.println("工作日");
            case 6,7 -> System.out.println("休息日");
            default -> System.out.println("没有这个星期");

        }
    }
}

四 循环结构

1 for循环结构

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形 成死循环。

格式:

for (初始化语句;条件判断语句;条件控制语句) {
    循环体语句;
}

格式解释:

  • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样

  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去

  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情

  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

执行流程:

①执行初始化语句

②执行条件判断语句,看其结果是true还是false

如果是false,循环结束

如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

for循环书写技巧:

  • 确定循环的开始条件

  • 确定循环的结束条件

  • 确定循环要重复执行的代码

  练习

运行五次HelloWorld

package com.itheima.loopdemo;

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

  • 需求:求1-5之间的数据和,并把求和结果在控制台输出

package com.itheima.test;

public class Test8 {
    public static void main(String[] args) {
        int sum=0;
        for (int i=1;i<=5;i++){
            sum=sum+i;  //sum +=i;
        }
        System.out.println(sum);
    }
}
  • 需求:求1-100之间的偶数和,并把求和结果在控制台输出 }

快捷键:100.fori

package com.itheima.test;

public class Test9 {
    public static void main(String[] args) {
        int sum=0;
        for (int i = 1; i <= 100; i++) {
            if(i%2==0){
                sum+=i;
            }
            
        }
        System.out.println(sum);
    }
}

 

需求:

键盘录入两个数字,表示一个范围。

统计这个范围中。

既能被3整除,又能被5整除数字有多少个?

package com.itheima.test;

import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数");
        int start=sc.nextInt();
        System.out.println("请输入第二个数");
        int end=sc.nextInt();
        for (int i = start; i <= end; i++) {
            if(i%3==0&&i%5==0){
                System.out.println(i);
            }
            
        }
    }
}

 

统计个数

package com.itheima.test;

import java.util.Scanner;

public class Test10 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数");
        int count=0;
        int start=sc.nextInt();
        System.out.println("请输入第二个数");
        int end=sc.nextInt();
        for (int i = start; i <= end; i++) {
            if(i%3==0&&i%5==0){
                count +=1;

            }
            
        }
        System.out.println(count);
    }
}

2.while循环

格式:

初始化语句;
while(条件判断语句){
    循环体;
    条件控制语句;
}

for 和 while 的区别:


1.for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了

while循环中,控制循环的变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可以继续使用

2.for循环中:知道循环次数或者循环的范围
while循环:不知道循环的次数和范围,只知道循环的结束条件

练习

需求:世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

package com.itheima.test;

public class Test1 {
    public static void main(String[] args) {
        double height=8844430;
        double paper=0.1;
        int count =0;
        while(paper<height){
            paper=paper*2;
            count++;
        }
        System.out.println(count);
    }
}

 

回文数

需求:给你一个整数 x。
如果x是一个回文整数,打印 true,否则,返回 false。
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

package com.itheima.test;

public class Test11 {
    public static void main(String[] args) {
        //1.定义数字
        int x=12345;
        //定义一个临时变量记录x原来的值
        int temp = x;
        //记录倒过来的值
        int num=0;
        while(x!=0){
            //从右往左获取每一位数字
            int ge=x%10;
            //修改x记录的值
            x=x/10;
            //把当前获取到的数字拼接到最右边
            num=num*10+ge;
        }
        System.out.println(num);
        System.out.println(x);
        System.out.println(num==temp);
    }
}

 

商和余数

需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)将两数相除,要求不使用乘法、除法和 % 运算符。得到商和余数。

 

package com.itheima.test;

public class Test12 {
    public static void main(String[] args) {
        int dividend=100;//被除数
        int divisor=10;//除数
        int sum=0;//次数 商
        while(dividend>=divisor){
            dividend=dividend-divisor;
            sum++;
        }
        System.out.println("余数为"+dividend);
        System.out.println("商为"+sum);
    }
}

3.do...while循环

格式:

初始化语句;
do{
    循环体;
    条件控制语句;
}while(条件判断语句);

特点:

先执行,再判断。

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

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

相关文章

Blender使用Rigify和Game Rig Tool基础

做动画需要的几个简要步骤&#xff1a; 1.建模 2.绑定骨骼 3.绘制权重 4.动画 有一个免费的插件可以处理好给引擎用&#xff1a;Game Rig Tool 3.6和4.0版本的 百度网盘 提取码&#xff1a;vju8 1.Rigify是干嘛用的&#xff1f; 》 绑定骨骼 2.Game Rig Tool干嘛用的&#xf…

Revit中使用依赖注入

依赖注入的技术已经很成熟&#xff0c;本文主要是说明一下Revit中的适用版本与介绍相关的开源项目。 版本问题 版本 目前的依赖注入包无法支持Revit 2020 以下的版本&#xff0c;原因是因为包中的依赖项与Revit本身的依赖项不一致导致的&#xff0c;所以说如果使用Revit DI…

2V2无人机红蓝对抗仿真

两架红方和蓝方无人机分别从不同位置起飞&#xff0c;蓝方无人机跟踪及击毁红方无人机 2020a可正常运行 2V2无人机红蓝对抗仿真资源-CSDN文库

探索Gin框架:Golang使用Gin完成文件上传

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 在之前的文章中&#xff0c;我们讲解了Gin框架的快速入门使用&#xff0c;今天我们来聊聊如何使用…

单细胞scATAC-seq测序基础知识笔记

单细胞scATAC-seq测序基础知识笔记 单细胞ATAC测序前言scATAC-seq数据怎么得出的&#xff1f; 该笔记来源于 Costa Lab - Bioinformatics Course 另一篇关于scRNA-seq的请移步 单细胞ATAC测序前言 因为我的最终目的是scATAC-seq的数据&#xff0c;所以这部分只是分享下我刚学…

c++类继承

一、继承的规则 &#xff08;1&#xff09;基类成员在派生类中的访问权限不得高于继承方式中指定的权限。例如&#xff0c;当继承方式为protected时&#xff0c;那么基类成员在派生类中的访问权限最高也为protected&#xff0c;高于protected会降级为protected&#xff0c;但低…

阿里云部署的幻兽帕鲁服务器,为什么没有一键更新游戏服务端、导入存档、可视化的游戏配置

如果有的朋友发现自己用阿里云部署的幻兽帕鲁服务器&#xff0c;找不到一键更新游戏服务端、一键导入存档、以及可视化的游戏配置。其实答案很简单&#xff0c;因为你的“阿里云计算巢”版本需要更新。你只需要更新到最新版&#xff0c;就可以拥有这些便捷的功能了。 具体的操…

【备战蓝桥杯】——循环结构终篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-yl4Tqejg4LkjZLAM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

一文辨析清楚LORA、Prompt Tuning、P-Tuning、Adapter 、Prefix等大模型微调方法

本文探讨了大模型微调的核心概念和方法&#xff0c;详细介绍了如LoRA、Adapter Tuning、Prefix Tuning等多种微调策略。每种方法的原理、优势及适用场景都有详尽阐述&#xff0c;大家可以根据不同的应用需求和计算资源&#xff0c;选择到最合适自己的微调途径。 希望本文能对想…

Linux下grep命令详解

grep #文件内容过滤显示 #在指定的普通文件中查找并显示含有指定字符串的行&#xff0c;也可与管道符一起使用格式&#xff1a; grep-参数 查找条件 文件名 参数&#xff1a; 示例&#xff1a; [rootnode1 ~]# grep -n "root" /etc/passwd # -n&a…

LangChain结合通义千问的自建知识库

LangChain结合通义千问的自建知识库 在使用了通义千问API了之后&#xff0c;下一步就是构建知识库文档&#xff0c;使用了比较有名的LangChian&#xff0c;最后成果将自己的txt生成了知识向量库&#xff0c;最后我还把自己的论文生成了一个知识向量库&#xff0c;然后问他我的…

Java 基于 SpringBoot+Vue 的前后端分离的火车订票管理系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Cambalache in Ubuntu

文章目录 前言apt install flatpak这很ok后记 前言 gtkmm4相比gtkmm3有很多改革, 代码也干净了许多, 但在windows上开发 有ui设计器那自然方便很多, 但glade又不支持gtkmm4, windows上装Cambalache很是困难. 各种问题都找不到答案.于是 我用VMware虚拟机Ubuntu20.xx安装Cambal…

C++集群聊天服务器 网络模块+业务模块+CMake构建项目 笔记 (上)

跟着施磊老师做C项目&#xff0c;施磊老师_腾讯课堂 (qq.com) 一、网络模块ChatServer chatserver.hpp #ifndef CHATSERVER_H #define CHATSERVER_H#include <muduo/net/TcpServer.h> #include <muduo/net/EventLoop.h> using namespace muduo; using namespace …

5分钟快速掌握 XML (Extensible Markup Language)

背景 在Java开发的过程中&#xff0c;我们经常需要和配置文件打交道&#xff0c;其中接触最多的就是XML。从最初学习 JavaWeb 时在 Tomcat 中配置servlet&#xff0c;到后来接触Spring框架并在XML中编写各种配置&#xff0c;XML一直是不可或缺的一部分。然而&#xff0c;XML的…

在Vue中如何构建复杂表单?

概述 很有可能&#xff0c;在我们的软件工程旅程中&#xff0c;我们至少要构建一次复杂的表单。本文将介绍如何创建一个复杂的表单&#xff0c;该表单可以使用一些Vue特性(如v-for和v-model)逐步增强。它还提供了一些基本的Vue核心功能的复习&#xff0c;这些功能将在您日常使…

MySQL中去除重复(十一)

MySQL中去除重复(十一) 一、相同的行 我们要去除相同行要使用DISTINCT关键字 SELECT DISTINCT 列名 FROM 表名; distinct 是针对查询的结果集合进行去重而不是针对某一行或者某一列。 二、查询中的行选择 用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个 必须满…

【Matplotlib】figure方法之图形的保存

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;matplotlib &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…

在flutter中集成Excel导入和导出

flutter中集成Excel导入和导出功能 1、需要的依赖 在pubspec.yaml #excel导出syncfusion_flutter_xlsio: ^24.1.45open_file: ^3.0.1#导入excelflutter_excel: ^1.0.1#选择文件的依赖file_picker: ^6.1.1&#xff08;1&#xff09;依赖说明 在测试时&#xff0c;我们在使用导…

Faster-Whisper 实时识别电脑语音转文本

Faster-Whisper 实时识别电脑语音转文本 前言项目搭建环境安装Faster-Whisper下载模型编写测试代码运行测试代码实时转写脚本实时转写WebSocket服务器模式 参考 前言 以前做的智能对话软件接的Baidu API&#xff0c;想换成本地的&#xff0c;就搭一套Faster-Whisper吧。 下面是…