Java-day03(程序流程控制)

news2024/11/18 13:27:15

程序流程控制

1.顺序结构

程序从上至下逐行执行,无判断与跳转

public class Test1{       
	public static void main(String[] args){
                 	int i = 1;
		int j = i + 1; 
		System.out.println(j);
	}
}

2.分支结构

依据条件,选择性执行某段语句
主要有以下两种

2.1 if…else语句

在这里插入图片描述

单判断

public class Test2{   
	public static void main(String[] args){
                 	int age = 26;
		if(age >= 18){
			System.out.println("你已经成年了!");
		}else{
			System.out.println("你还是未成年!");
}
	}
}

多判断

public class Test3{       
	public static void main(String[] args){
                 	int age = 26;
		if(age <18){
			System.out.println("你还是未成年!");
		}else if(age > 45){
			System.out.println("你是中老年人!");
		}else{
			System.out.println("你是青年人!");
		}
	}
}

优化:添加键盘输入

//1.导包
import java.util.Scanner;                  
public class Test4{
	public static void main(String[] args){
		//2.创建Scanner类的对象
		Scanner s = new Scanner(System.in);
		System.out.println("请输入你的年龄:  ");
		//3.调用此对象的方法next(字符串),nextInt(整型)
		int age = s.nextInt();
		if(age < 18){
			System.out.println("你还是未成年!");
		}else if(age > 45){
			System.out.println("你是中老年人!");
		}else{
			System.out.println("你是青年人!");
		}
	}
}

if…else分支结构测试
题目一
在这里插入图片描述

import java.util.Scanner;                      
public class Test5{
	public static void main(String[] args){
		Scanner s = new Scanner(System.in);
		System.out.println("请输入你的成绩:  ");
		int score = s.nextInt();
		if(score == 100){
			System.out.println("BMW车,你拿走!");
		}else if(80 < score && score <= 99){
			System.out.println("Iphone13,你拿走!");
		}else if(60 <= score && score <= 80){
			System.out.println("参考书,你拿走!");
		}else{
			System.out.println("什么都没有了!");
		}
	}
}

题目二
在这里插入图片描述

方法一:

import java.util.Scanner;             
public class Test {    
    public static void main(String[] args) {
        // 键盘输入三个数
        Scanner s = new Scanner(System.in);
        System.out.println("第一个数:  ");
        int num1 = s.nextInt();
        System.out.println("第二个数:  ");
        int num2 = s.nextInt();
        System.out.println("第三个数:  ");
        int num3 = s.nextInt();
		if(num1 > num2){
			if(num3 > num1)
				System.out.println("三个数从小到大排列:" + num2 +"," + num1 + "," + num3);
			else if(num3 < num2){
				System.out.println("三个数从小到大排列:" + num3 +"," + num2 + "," + num1);
			}else
				System.out.println("三个数从小到大排列:" + num2 +"," + num3 + "," + num1);
		}else{
			if(num3 > num2){
				System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);
			}
			else if(num3 < num1){
				System.out.println("三个数从小到大排列:" + num3 +"," + num1 + "," + num2);
			}else{
			System.out.println("三个数从小到大排列:" + num1 +"," + num3 + "," + num2);
			}
	    }
	}
}

方法二:

import java.util.Scanner;                
public class Test{
	public static void main(String[] args){
		//1.键盘输入三个数
		Scanner s = new Scanner(System.in);
		System.out.println("第一个数:  ");
		int num1 = s.nextInt();
		System.out.println("第二个数:  ");
		int num2 = s.nextInt();
		System.out.println("第三个数:  ");
		int num3 = s.nextInt();
		//2.判断第一个与第二个数的大小,让num2 > num1(如果num1>num2,值互换;反之就不变)
		if(num1 > num2){
			num1 = num1 ^ num2;
			num2 = num1 ^ num2;
			num1 = num1 ^ num2;
		}	
		//3.判断第三个数的大小(第二大,最小,最大)
		if(num2 >num3 && num3 > num1){
			num2 = num2 ^ num3;
			num3 = num2 ^ num3;
			num2 = num2 ^ num3;
			System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);
		}else if(num2 >num3 && num3 < num1){
			System.out.println("三个数从小到大排列:" + num3 +"," + num1 + "," + num2);
		}else{
			System.out.println("三个数从小到大排列:" + num1 +"," + num2 + "," + num3);	
		}
	}
}

注意

  1. 条件判断之间可以嵌套
    如果多个条件语句是互斥关系,多个条件语句上下顺序自由
    如果多个条件语句是包含关系,要求条件语句范围的要写范围大的上面
  2. 如果if中的执行语句只有一行,可以省略{},建议不要省略。

2.2 switch语句

在这里插入图片描述

  1. switch语句会根据表达式对应case去判断,满足就执行,每条case语句一定要加break,否则程序会继续执行下去
  2. case 常量:常量只能是值,不能是取值范围
  3. default:可选,位置灵活
  4. 常量可取char,byte,short,int,String(jdk1.7),枚举

switch分支结构测试
题目一
根据输入的月份,判断当前季节?

import java.util.Scanner;      
// 3,4,5,月为春天,6,7,8,月为夏天,9,10,11月为秋天,12,1,2月为冬天
public class Test {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入月份:  ");
        int age = s.nextInt();
		switch(age/3){
			case 1:
				System.out.println(age + "月是春天");
				break;
			case 2:
				System.out.println(age + "月是夏天");
				break;
			case 3:
				System.out.println(age + "月是秋天");
				break;
			default:
				System.out.println(age + "月是冬天");
				break;
		}
	}
}

题目二

根据键盘输入的月份与日期,判断是2023年的第多少天?

import java.util.Scanner;      
public class Test {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入月份:  ");
        int month = s.nextInt();
		System.out.println("请输入日期:  ");
        int day = s.nextInt();
		int sum = 0;
		switch(month){
			default:
				System.out.println("输入错误");
			case 12:
				sum += 30; //+11月
			case 11:
				sum += 31; //+10月
			case 10:
				sum += 30; //+9月
			case 9:
				sum += 31; //+8月
			case 8:
				sum += 31; //+7月
			case 7:
				sum += 30; //+6月
			case 6:
				sum += 31; //+5月
			case 5:
				sum += 30; //+4月
			case 4:
				sum += 31; //+3月
			case 3:
				sum += 28; //+2月
			case 2:
				sum += 31; //+1月
			case 1:
				sum += day;					
		}
		System.out.println(month + "月" + day + "日" + "是2023年的第" + sum + "天");
	}
}

课外题
在这里插入图片描述

3.循环结构

依据条件,重复性执行某段语句
组成部分:初始化部分,循环条件部分,循环体部分,迭代部分
主要有以下三种

3.1 while语句

在这里插入图片描述

输出100以内的所以偶数及所有偶数的和
方法一:

public class Test {  
    public static void main(String[] args) {
        int sum = 0;
        int i = 0;
        while(i <= 100){
            sum += i;
            System.out.println(i);
            i += 2;
        } 
        System.out.println(sum);
	}
}

方法二:

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

3.2 do…while语句

格式

初始化;
do{
    循环体;
    迭代条件;
}while(循环条件)

输出100以内的所以偶数及所有偶数的和
方法一:

public class Test2 {   
    public static void main(String[] args) {
        int sum = 0;
        int i = 0;
        do{
            System.out.println(i);
            sum += i;
            i += 2;
          }while(i <= 100);
        System.out.println(sum);     
    }     
}

方法二:

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

while语句与do-while的区别:
do-while至少执行一次

3.3 for语句(常用)

格式:

for(初始化;循环条件;迭代条件;){
	循环体;
}

执行过程:初始化,循环条件,循环体,迭代条件,循环条件,循环体,迭代条件,循环条件…
简单编写

public class Test1 {  
    public static void main(String[] args) {
        //for循环(初始化,循环条件,迭代条件,循环体)
        for(int i = 1;i < 4;i++){
            System.out.println("欢迎光临,我的第" + i + "位客人!");
        } 
	}
}

题目一
输出100以内的所以偶数及所有偶数的和
方法一:

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

方法二:

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

题目二
在这里插入图片描述

public class Test1 {        
    public static void main(String[] args) {
         int sum = 0;
        for(int i = 0;i <= 150;i++){
            System.out.print(i);
            if(i % 3 == 0){
                System.out.print("foo");
            }
            if(i % 5 == 0){
                System.out.print("biz");
            }
            if(i % 7 == 0){
                System.out.print("baz");
            }
            System.out.println();
        } 
	}
}

题目三:水仙花树
在这里插入图片描述

public class Test1 {      
    public static void main(String[] args) { 
         int sum = 0; 
        for(int i = 100;i < 1000;i++){ 
            int a = i/100; 
            int b = (i/10)%10; 
            int c = i%10; 
            if(a * a * a + b * b * b + c * c * c == i){ 
                System.out.println(i); 
            }
        } 
	}
}

题目四
在这里插入图片描述

方法一
for循环

import java.util.Scanner;     
public class Test{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = 0; //正数个数
        int b = 0; //负数个数
        int c = 0; //总数个数
        for(;;c++){
            System.out.println("请输入数字");
            int j = s.nextInt();
            if(j > 0){
                a += 1;
            }else if(j < 0){
                b += 1;
            }else{
                break;
            }
        }
        System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b );     
    }     
}

方法二
while循环

import java.util.Scanner;  
public class Test{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = 0; //正数个数
        int b = 0; //负数个数
        int c = 0; //总数个数
        while(true){
            System.out.println("请输入数字");
            int j = s.nextInt();
            if(j > 0){
                a += 1;
                c++;
            }else if(j < 0){
                b += 1;
                c++;
            }else{
                break;
            }
        }
        System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b );     
    }     
}

方法三

import java.util.Scanner;    
public class Test{
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int a = 0; //正数个数
        int b = 0; //负数个数
        int c = 0; //总数个数
        for(int i = 1;i != 0;c++){
            System.out.println("请输入数字");
            int j = s.nextInt();
            if(j > 0){
                a += 1;
            }else if(j < 0){
                b += 1;
            }else{
                i = 0;
            }
        }
        System.out.println("总共输入个数" + c + "正数个数为: " + a + "负数个数为:" + b + "零个数为:1");     
    }     
}

嵌套循环
在这里插入图片描述

一:打印边长为5*的正方形(特殊的长方形)

public class Test{         
    public static void main(String[] args) {
        for(int i = 1;i < 6;i++){//外层控制行数
            for(int j = 1;j < 6;j++){//内层控制列数
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

二:打印金字塔型

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

题目一:九九乘法表

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

题目二:1~100之间的质数
方法一

public class Test{              
    public static void main(String[] args) {
            boolean flag = false;
            for(int i = 2;i <= 100;i++){
                for(int j = 2;j < i;j++){
                    if(i % j == 0){
                        flag = true;
                    }
                }
                if(flag == false){
                    System.out.println(i);
                }
                flag = false;
            }
    }
}

方法二(优化)

public class Test{                
    public static void main(String[] args) {
            boolean flag = false;
            long start = System.currentTimeMillis();//获取当前系统毫秒数
            for(int i = 2;i <= 1000;i++){
                for(int j = 2;j <= Math.sqrt(i);j++){//优化一:取根号即可确定根号i平方 == i
                    if(i % j == 0){
                        flag = true;
                        break;           //优化二:满足条件就退出循环
                    }
                }
                if(flag == false){
                    System.out.println(i);
                }
                flag = false;
            }
            long end = System.currentTimeMillis();
            System.out.println("总花费时间:" + (end-start));
    }
}
  1. break:结束"当前"循环;continue:结束"当次"循环
  2. break语句与continue语句之后不能添加其他语句

注:JDK1.5提供方便遍历集合,数组元素的foreach循环

4.练习题

在这里插入图片描述

在这里插入图片描述  
在这里插入图片描述
感谢大家的支持,关注,评论,点赞!
参考资料:
尚硅谷宋红康20天搞定Java基础上部

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

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

相关文章

计算机毕设 深度学习卫星遥感图像检测与识别 -opencv python 目标检测

文章目录 0 前言1 课题背景2 实现效果3 Yolov5算法4 数据处理和训练5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长…

VSCode搭建GCC环境

1. 下载 https://www.mingw-w64.org/downloads/ https://github.com/niXman/mingw-builds-binaries/releases 2.安装 x86_64-12.2.0-release-win32-seh-rt_v10-rev1.7z解压到D盘 我的电脑–属性–系统属性–环境变量–系统变量–path D:\MinGW-w64\x86_64-12.2.0-release…

用html+javascript打造公文一键排版系统10:单一附件说明排版

如果公文有附件&#xff0c;一般会在公文正文下作附件说明。 一、附件说明的格式 一般为&#xff1a; 公文如有附件&#xff0c;在正文下空一行左空二字编排"附件"二字&#xff0c;后标全角冒号和附件名称。如有多个附件&#xff0c;使用阿拉伯数字标注附件顺序号&…

OSI 7层模型 TCP/IP四层模型 5层模型都是什么,作用是什么【每层的协议没整理完】

7层模型 && 4层TCP/IP 模型对照关系 7层&&5层&&4层模型对照&#xff1a; 我们的教科书为了更好地表示数据包在网络传输上的封装和解封装&#xff0c;抽象出了5层模型 7层模型&#xff1a; 各层的用途&#xff1a; 应用层&#xff1a;为计算机上用户提…

Qt 2. QSerialPortInfo显示串口信息

在ex2.pro 添加&#xff1a; QT serialport//main.cpp #include "ex2.h" #include <QtSerialPort/QtSerialPort> #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Ex2 w;w.show();QList<QSerialPortInfo>…

(二)利用Streamlit创建第一个app——单页面、多页面

1 单页面app Step1&#xff1a;创建一个新的Python脚本。我们称之为uber_pickups.py。 Step2&#xff1a;在您喜爱的IDE或文本编辑器中打开uber_pickups.py&#xff0c;然后添加以下行&#xff1a; import streamlit as st import pandas as pd import numpy as npStep3&…

计算机视觉(五)深度学习基础

文章目录 深度学习基础卷积神经网络与传统神经网络区别深度学习与神经网络的区别 目标函数选择合适的目标函数Softmax层 改进的梯度下降梯度消失的直观解释激活函数学习步长SGD的问题Momentum动量Nesterov MomentumAdagradRMSpropAdam 各种梯度下降算法比较关于算法选择的建议B…

1、Hadoop3.x 从入门到放弃,第一章:概念

Hadoop3.x从入门到放弃&#xff0c;第一章&#xff1a;概念 一、什么是大数据 1、主要解决什么 大数据主要解决&#xff1a;海量数据的“采集”、“存储” 和 "分析计算" 问题2、大数据特点 1> Volume 大量 2> velocity 高速 3> variety 多样性数据分为…

高通死机分析-工具

为了方便高通稳定性领域分析9008以及死机问题&#xff0c;特此写此工具&#xff0c;方便大家分析死机问题&#xff0c;此工具还待完善&#xff0c;后续将发布&#xff0c;有兴趣请联系2251858097qq.com

matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

【C#教程】零基础从入门到精通

今天给大家分享一套零基础从入门到精通&#xff1a;.NetCore/C#视频教程&#xff1b;这是2022年最新整理的、590G的开发教程资料。课程涵盖了.Net各方面的知识&#xff0c;跟着这个教程学习&#xff0c;就足够了。 课程分类 1、C#从基础到精通教程&#xff1b; 2、Winform从…

6.生成随机数、猜数字游戏(rand函数、srand函数、time函数)

猜数字游戏 1.生成随机数1.1 rand函数1.2 srand函数1.3 time函数1.4 设置随机数的范围 2.猜数字游戏 1.生成随机数 1.1 rand函数 函数原型如下&#xff1a; int rand(void); 所需头文件&#xff1a;stdlib.h 作用&#xff1a;调用后随机返回一个伪随机数&#xff0c;随机数范…

QtXlsx: no such file or directory

Qt项目&#xff0c;引用了QtXlsx&#xff0c;准备运行&#xff0c;提示报错&#xff1a; QtXlsx: No such file or directory 奇怪。按理说&#xff0c;安装QtXlsx的三个步骤都已经执行成功了&#xff1a; qmake make make install 把生成的so库文件拷贝到相关目录也是无效。…

解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo

&#x1f600;前言 解决PicGo上传图片失败错误信息和上传图片失败包404错误以及Typora怎么一键导入本地图片到PicGo &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#x…

c++ 的reinterpret_cast 与const_cast 类型转换举例

&#xff08;1&#xff09;const_cast 转换&#xff0c;可以使得给常量赋值。reinterpret_cast 转换&#xff0c;可以把一种类型转换为无关的另一种类型。 图中给出了一个例子。成功给指针 p 写进去了内容。先去除指针p 的常量属性&#xff0c;再把p这个变量当成 B 类型的变量…

C语言之#define以及预处理详讲解

目录 #define #define的使用方法 #define 替换规则 #和##的作用 带副作用的宏参数 宏和函数对比 #undef 文件包含 头文件被包含的方式&#xff1a; 嵌套文件包含 在C语言中&#xff0c;一段程序运行时会执行四个步骤&#xff1a;预编译、编译、汇编、链接。在程序预编…

初学者如何选择自己的第一种编程语言?

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

Just Mask and Sum 手搓 自然语言模型

背景 在这个每天都能看到&#xff0c;各种新LLM论文&#xff0c;出现的今天&#xff0c;大家讨论的都是如何将transformer &#xff0c;或者说是将attention 进行线性化。 很少有人讨论&#xff0c;注意力机制是必要的吗&#xff08;attention is must&#xff09;&#xff1f;…

CentOS 7.6使用yum安装stress,源码安装stree-ng 0.15.06,源码安装sysstat 12.7.2

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64 yum install stress sysstat -y安装stress和sysstat。 使用pidstat -u 5 1没有%wait项&#xff1a; 原因是CentOS 7仓…

数电模电基础知识学习笔记汇总

文章目录&#xff1a; 数电和模电的关系 一&#xff1a;模电学习笔记 二&#xff1a;数电学习笔记 三&#xff1a;福利 1.NI Multisim14.0电路仿真软件的下载安装 2.进制转换 3.电路常用公式 4.好的参考笔记 4.1 笔记 3.1.1 模电 3.1.1 数电 4.2 网站 5.八股文 …