6、If、While、For、Switch

6、If、While、For、Switch

一、If

1、if-else
if (boolean) {
    代码块
} else if (boolean) {
    代码块
} else if (boolean) {
    代码块
} else { // 默认情况
    代码块
}

关于IDEA单元测试控制台不能输入数据的问题:

https://blog.csdn.net/m0_72900498/article/details/143663689?spm=1001.2014.3001.5501

-Deditable.java.test.console=true

代码示例:

package com.situ.day8;

import org.junit.Test;

import java.util.Scanner;

public class Demo01 {

    @Test
    public void test1() {
        if (3 >= 5) {
            System.out.println("3 < 5");
        } else {
            System.out.println("3 >= 5");
        }
    }
    /*
        >=90   <=100      优秀
        >=80    <90       良好
       >=70    <80       一般
       >=60    <70      及格
       <60              不及格
   */
        @Test
        public void test2(){
            //你想表达什么意思就起成什么名字
            //int score = 9;
            //通过Scanner可以实现从控制台输入信息
            //对于<0和>100的数据,打印“这是非法输入”
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入成绩:");
            int score = scanner.nextInt();
            //卫语句1
            if (score < 0 || score > 100) {
                System.out.println("这是非法输入");
                //方法后面的代码不再执行
                return;
            }
            //卫语句2...

            //合法输入
            if (score >= 90 && score <= 100) {
                System.out.println("优秀");
            } else if (score >= 80 && score < 90) {
                System.out.println("良好");
            } else if (score >= 70 && score < 80) {
                System.out.println("一般");
            } else if (score >= 60 && score < 70) {
                System.out.println("及格");
            } else {
                System.out.println("不及格");
            }
        }
    }

在这里插入图片描述

2、三目运算符

语法:boolean ? 数1 : 数2
执行过程:计算boolean的值
若为true:则整个结果为数1
若为false:则整个结果为数2

@Test
public void test55() {
    int num1 = 13;
    int num2 = 5;
    int max = 0;
    if (num1 >= num2) {
        max = num1;
    } else {
        max = num2;
    }
    System.out.println(max);
    
    //等价于:
    int max1 = num1 >= num2 ? num1 : num2;
    System.out.println(max1);
}
3、+号运算符

1、两边都是数字,则做的就是加法运算

2、若一边为字符串,则做的是字符串的拼接

@Test
public void test7() {
    int age = 28;
    //豆豆加加
    System.out.println("我的年龄是23岁");
    System.out.println("我的年龄是" + age + "岁");
    System.out.println(10 + 20 + "" + 30);//3030
    System.out.println("" + 10 + 20 + 30);//102030
}

二、While、For

1、while、for

任何复杂的程序逻辑都可以通过“顺序”、“分支”、“循环”这三种基本结构来实现。

在这里插入图片描述

循环的三要素:

1.循环条件的初始化

2.循环条件的控制

3.循环条件的改变

 if (boolean) {
}//if不是循环
while (boolean) {
    //可以反复执行
}

在这里插入图片描述

示例:

使用While和for循环分别打印五次HelloWorld:

@Test
public void test1() {
    int i = 1;
    while (i <= 5) {
        System.out.println("HelloWorld");
        i++;
    }
}

@Test
public void test2() {
    for (int i = 1; i <= 5; i++) {
        System.out.println("HelloWorld");
    }
}

while、for循环主要是两类题目:

1、累加思想(1+2+3+… + 100)

//sum += i;     sum = sum + i
//sum -= i;     sum = sum - i
//sum *= i;     sum = sum * i
//sum /= i;     sum = sum / i
@Test
public void test3() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        System.out.println(i);
        sum += i;
        System.out.println("sum: " + sum);
    }
    System.out.println("sum: " + sum);
}

2、统计思想,数一下符合条件的有多少个(计算1-100以内7的倍数的个数)

@Test
public void test4() {
    int count = 0;
    for (int i = 1; i <= 100; i++) {
        if (i % 7 == 0) {
            System.out.println(i);
            count++;
        }
    }
    System.out.println("count: " + count);
}
2、continue、break

continue:跳出本次循环,继续下一次循环

break:跳出离他最近的那层循环

@Test
public void test44() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            continue;
        }
        System.out.println(i);
        //输出 1 2 4 5
    }
}

@Test
public void test45() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;
        }
        System.out.println(i);
        //输出1 2
    }
}

@Test
public void test46() {
    //i,j,k
    for (int i = 1; i <= 5; i++) {
        System.out.println("i: " + i);
        for (int j = 1; j <= 5; j++) {
            if (j == 3) {
                break;
                //break只能退出离他最近的一层循环;也就是退出for (int j = 1; j <= 5; j++)这层循环
            }
            System.out.println("j: " + j);
        }
    }
}
例题:随机生成一个整数1-1000

用户输入一个整数,程序给出与存储的数字是“大”或者“小”,知道用户猜到这个数字位置。
如果中途用户希望程序退出,输入0可以退出。
int num = 200;
猜吧!
300
太大了
猜吧!
180
太小了
猜吧!
200
恭喜你,猜对了

//随机生成一个整数1-1000
@Test
public void test7() {
    //params  parameter:参数
    Random random = new Random();
    //the upper bound (exclusive). Must be positive.
    //exclude:排除、不包含
    //include:
    //value between zero (inclusive) and bound (exclusive)
    // [0,100) + 1
    // 1-100
    int num = random.nextInt(100) + 1;
}

关于快捷键获取方法的返回值:

random.nextInt(100).var然后回车

在这里插入图片描述

3、双重for循环

在这里插入图片描述

双重for循环:

1.外层循环控制行数,数一下有几行就能确定外层循环。

2.内层循环控制列数,这一行打印多少个,到底要打印多少个要找出和当前行之间的一个关系。

@Test
    public void test55() {
        //****
        for (int i = 1; i <= 4; i++) {
            System.out.print("*");
        }
        System.out.println();
        //*
        //*
        //*
        //*
        for (int i = 1; i <= 4; i++) {
            System.out.println("*");
        }
    }

    @Test
    public void test6() {
        // i=1代表打印第一行
        for (int i = 1; i <= 3; i++) {
            //i=1: 代表打印第一行
            //i=2: 代表打印第二行
            //i=3: 代表打印第三行
            for (int j = 1; j <= 4; j++) {
                //j代表这一行打印多少个
                System.out.print("*");
            }
            //打印完一行之后需要换行
            System.out.println();
        }
    }

//    *
//    **
//    ***
//    ****
//    *****
    @Test
    public void test545() {
        // i=1 j=1
        // i=2 j=2
        // i=3 j=3
        for (int i = 1; i <= 5; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    @Test
    public void test75() {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                //System.out.println("2*7=14");
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");
            }
            System.out.println();
        }
    }
4、无限循环
while(true) 
for(;;)

三、Switch

switch: 可以接受的值(int byte 整数类型,char,String)

switch(2) {
    case 1:
    .....
    break;
    case 2:
    ....
    break;
    .....  
    default:
    .....
    break;
}
@Test
public void test90() {
    int num = 2;
    if (num == 1) {
        System.out.println("1");
    } else if (num == 2) {
        System.out.println("2");
    } else if (num == 3) {
        System.out.println("3");
    } else {
        System.out.println("else");
    }

    switch (num) {
        case 1:
            System.out.println("1");
            break;
        case 2:
            System.out.println("2");
            break;
        case 3:
            System.out.println("3");
            break;
        default:
            System.out.println("default");
            break;
    }
}

练习1:
输入月份、年份判断天数:
1、3、5、7、8、10、12 -------- 31天
4、6 、9、11--------------------30天
2----------------------------------28/29天

练习2:
之前用if-else做的程序,使用switch完成:

=90 <=100 优秀
=80 <90 良好
=70 <80 一般
=60 <70 及格
<60 不及格

@Test
public void test1() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入月份:");
    int month = scanner.nextInt();
    switch (month) {
        case 1:
            System.out.println("31天");
            break;
        case 3:
            System.out.println("31天");
            break;
        case 4:
            System.out.println("30天");
            break;
        case 5:
            System.out.println("31天");
            break;
        case 2:
            System.out.println("请输入年份:");
            int year = scanner.nextInt();
            break;
    }
}

@Test
public void test2() {
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入月份:");
    int month = scanner.nextInt();
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
            System.out.println("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("30天");
            break;
        case 2:
            System.out.println("请输入年份:");
            int year = scanner.nextInt();
            break;
        default:
            System.out.println("default");
            break;
    }
}

四、作业

1、计算某年是不是闰年:

能被4整除,但是不能被100整除 || 能被400整除
if (() || ()) {
}

2、从控制台输入两个数,然后分别打印这两个数,然后交换这两个数的值

在这里插入图片描述

3.1、编写一个收银台收款程序,if

定义输入----单价、数量、用户输入金额

定义输出----应收金额、找零

使用double类型变量 scanner.nextDouble();

3.2、当总价>=500时候打八折
3.3、考虑程序出现异常的情况,如:收款金额小于应收金额
  若收款金额大于等于应收金额,则计算找零后输出
  
  若收款金额小于应收金额,输出错误信息。
4、输出一下结构:
1
12
123
1234
12345
5、打印正三角形和倒三角形
     *
    ***
   *****
  *******
 *********
***********
6、计算1-100以内所有奇数的和以及所有偶数的和,分别打印出来。
7、用for循环输出1—1000之间能被5整除的数,且每行输出3个
8、计算9的阶乘

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

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

相关文章

【智谱开放平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

贪心算法day05(k次取反后最大数组和 田径赛马)

目录 1.k次取反后最大化的数组和 2.按身高排序 3.优势洗牌 1.k次取反后最大化的数组和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public int largestSumAfterKNegations(int[] nums, int k) {//如…

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…

安科瑞工业绝缘监测装置:保障煤矿井下6kV供电系统安全运行的关键应用——安科瑞 丁佳雯

在现代煤矿开采中&#xff0c;供电系统的稳定性和安全性是至关重要的。特别是在煤矿井下&#xff0c;由于环境复杂、湿度大、易腐蚀等因素&#xff0c;供电系统面临着严峻的挑战。为了确保供电系统的正常运行和矿工的生命安全&#xff0c;采用先进的绝缘监测装置显得尤为重要。…

OKG Research:用户意图驱动的Web3应用变革

出品&#xff5c; OKG Research 作者&#xff5c;Samuel QIN 当前加密市场的快速演变中&#xff0c;用户增长成为行业可持续发展的基石。目前主流观点在推动行业前进的路上&#xff0c;从单纯的技术探索在向更注重应用价值的方向转变。尽管近年来Web3生态系统发展迅速&#xf…

人工智能:重塑医疗、企业与生活的未来知识管理——以HelpLook为例

一、医疗行业&#xff1a;AI引领的医疗革新 随着人工智能&#xff08;AI&#xff09;技术的持续飞跃&#xff0c;我们正身处一场跨行业的深刻变革之中。在医疗健康的广阔舞台上&#xff0c;人工智能技术正扮演着日益重要的角色。它不仅能够辅助医生进行病例的精准诊断&#xf…

Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5

不知道咋弄的ubuntu20.04电脑的cuda驱动丢了&#xff0c;无奈需装PyTorch环境&#xff0c;只有CUDA11.0以上版本才支持Ubuntu20.04&#xff0c;所以安装了CUDA11.0、cuDNN8.0.5 为防止频繁在浏览器检索对应的贴子&#xff0c;今天记录一下。 一. 驱动安装 为防止驱动安装后没…

Vue Element-UI 选择隐藏表格中的局部字段信息

一、功能需求分析 为什么需要这个功能&#xff1f; &#xff08;1&#xff09;简化信息&#xff0c;减少混乱&#xff1a; 就像整理抽屉&#xff0c;只留下常用的东西&#xff0c;这样找起来更快&#xff0c;看起来也更整洁。在表格中&#xff0c;只展示需要的字段&#xff…

STL学习-排序算法

1.sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序 2.partial_sort 使用堆排序,平均性能和最差都是O(nlogn),但实际情况比sort慢…

WSL 2 中 FastReport 与 FastCube 的设置方法与优化策略

软件开发人员长期以来一直在思考这个问题&#xff1a;“我们如何才能直接在 Windows 中运行 Linux 应用程序&#xff0c;而无需使用单独的虚拟机&#xff1f;” WSL 技术为这个问题提供了一个可能的答案。WSL 的历史始于 2016 年。当时&#xff0c;其实现涉及使用 Windows 内核…

JVM的组成、字节码文件的组成

目录 java虚拟机的组成 字节码文件的组成 基础信息 常量池 字段 方法 属性 字节码相关的常用工具&#xff1a; 总结&#xff1a; 1、如何查看字节码文件&#xff1f; 2、字节码文件的核心组成有哪些&#xff1f; java虚拟机的组成 类加载器 ClassLoader运行时数据区…

李佳琦回到巅峰背后,双11成直播电商分水岭

时间倏忽而过&#xff0c;又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》&#xff0c;到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较&#xff0c;再到直播间运营一时手快多发了红包……整个双11周期下来&#xff0c;李佳琦直播间在刷新…

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候&#xff0c;按照产品的要求&#xff0c;输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性&#xff0c;设置类型为number时&#xff0c;乍一看没啥问题&#xff0c;但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…

软件测试学习记录 Day1

根据黑马程序员最新版的软件测试课程所做的笔记&#xff0c;需要原件后台私信&#xff1a; 练习提取测试点&#xff1a; 博主的答案&#xff0c;有不一样看法的可评论区讨论&#xff1a;

uni-app选项卡制作 ⑥

文章目录 十、选项卡制作一 、组件创建二、scroll-view 组件使用三、点击设置按钮跳转到标签设置界面四、数据获取 十、选项卡制作 1.遇到错误&#xff1a; 2.解决问题&#xff1a; 3.this 指向问题 // 指向&#xff1a; get_label_list uniCloud.callFunction({name: "g…

最新x64dbg软件

最新x64dbg软件 1、简介2、调试程序界面3、开源官网 1、简介 最新x64dbg软件-比OD更好的工具&#xff0c;原生支持中文界面和插件。 x64dbg是一款专业的windows系统下的64位调试器&#xff0c;界面简洁、操作简单&#xff0c;与 “OllyDbg” 调试工具非常相似&#xff0c;如果…

【时间之外】IT人求职和创业应知【31】

目录 新闻一&#xff1a;2024年“秦创原沣东杯”陕西省科技工作者创新创业大赛颁奖仪式暨沣东新城机器人产业发展大会盛大启幕 新闻二&#xff1a;声网CEO赵斌&#xff1a;RTE将成为生成式AI时代AI Infra的关键部分 新闻三&#xff1a;“5G工业互联网”融合应用试点城市名单…

Docker使用docker-compose一键部署nacos、Mysql、redis

下面是一个简单的例子&#xff0c;展示如何通过Docker Compose文件部署Nacos、MySQL和Redis。请确保您的机器上已经安装了Docker和Docker Compose。 1&#xff0c;准备好mysql、redis、nacos镜像 sudo docker pull mysql:8 && sudo docker pull redis:7.2 &&…

04 深入 Oracle 并发世界:MVCC、锁、闩锁、事务隔离与并发性能优化的探索

文章目录 深入 Oracle 并发世界&#xff1a;MVCC、锁、闩锁、事务隔离与并发性能优化的探索一、多版本并发控制&#xff08;MVCC&#xff09;1.1 理论解析1.2 实践应用 二、锁与闩锁机制2.1 理论解析2.2 实践应用 三、事务隔离级别3.1 理论解析3.2 实践应用 四、死锁预防与解决…

PyQt5超详细教程终篇

PyQt5超详细教程 前言 接&#xff1a; [【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;](【Python篇】PyQt5 超详细教程——由入门到精通&#xff08;序篇&#xff09;-CSDN博客) 建议把代码复制到pycahrm等IDE上面看实际效果&#xff0c;方便理…