java基础-流程控制-day04
1. if单分支
public class TestIf01{
public static void main(String[] args){
// 对三个数(1-6) 求和
int num1 = 6;
int num2 = 6;
int num3 = 5;
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println("总和:"+sum);
// >=14 一等奖
// >=10 二等奖
// >=6 三等奖
// < 四等奖
if (sum>=14){
System.out.println("一等奖");
}
if (sum<14&&sum>=10){
System.out.println("二等奖");
}
if (sum<10&&sum>=6){
System.out.println("三等奖");
}
if (sum<6){
System.out.println("四等奖");
}
}
}
2. if else 多分支
public class TestIf02{
public static void main(String[] args){
// 对三个数(1-6) 求和
int num1 = 6;
int num2 = 6;
int num3 = 5;
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println("总和:"+sum);
// >=14 一等奖
// >=10 二等奖
// >=6 三等奖
// <6 四等奖
if (sum>=14){
System.out.println("一等奖");
}else if(sum>=10){//默认隐含了<14的条件
System.out.println("二等奖");
}else if(sum>=6){
System.out.println("三等奖");
}else{//注意这里不写if 默认隐含了<6的条件
System.out.println("四等奖");
}
}
}
3. if else双分支
可以改成 ?:结构
public class TestIf03{
public static void main(String[] args){
// 对三个数(1-6) 求和
int num1 = 6;
int num2 = 6;
int num3 = 5;
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println("总和:"+sum);
// >=10 中奖
// <10 没中奖
if (sum>=10){
System.out.println("中奖");
}else{
System.out.println("没中奖");
}
System.out.println(sum>=10?"中奖":"没中奖");
}
}
4. 随机生成一定区间的整数
random --> [0.0, 1.0)
*6 --> [0.0, 6.0)
int --> [0, 5]
+1 --> [1, 6]
(int)(Math.random()*6) +1
随机生成 32--68之间的一个数
68-32=36
random --> [0.0, 1.0)
*35 --> [0.0, 35.0)
int --> [0, 34)
+32 --> [32, 68)
(int)(Math.random()*35) +32
public class TestIf04{
public static void main(String[] args){
// 随机生成三个数(1-6) 求和
int num1 = (int)Math.random()*6 +1;
System.out.println("num1: "+num1);
int num2 = (int)(Math.random()*6) +1;
System.out.println("num2: "+num2);
int num3 = (int)(Math.random()*6) +1;
System.out.println("num3: "+num3);
int sum = 0;
sum += num1;
sum += num2;
sum += num3;
System.out.println("总和:"+sum);
// >=10 中奖
// <10 没中奖
if (sum>=10){
System.out.println("中奖");
}else{
System.out.println("没中奖");
}
}
}
练习1

import java.util.Scanner;
public class TestIf05{
public static void main(String[] args){
//输入积分
Scanner sc = new Scanner(System.in);
System.out.println("请输入积分:");
if (sc.hasNextInt()==true){
int score = sc.nextInt();
System.out.println("输入积分是:"+score);
if (score>=0){
//判断折扣
double discount = 0;
if (score>=8000){
discount = 0.6;
}else if(score>=4000){
discount = 0.7;
}else if(score>=2000){
discount = 0.8;
}else{
discount = 0.9;
}
System.out.println("折扣:"+discount);
}else{
System.out.println("输入积分不能为负数!");
}
}else{
System.out.println("输入积分不合法");
}
}
}
练习2;
小朋友搬桌子:
年龄大于7岁,可以搬桌子;
如果年龄大于5岁,性别是男,可以搬桌子;
否则不可以搬动桌子,提示:你还太小了
逻辑分析:
- 年龄大于7 男孩女孩都能搬
- 年龄小于5 都不能
- 年龄 5--7之间 只有男孩才能搬
import java.util.Scanner;
public class TestIf06{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = sc.nextInt();
if(age>7){
System.out.println("yes");
}else if(age>5){
System.out.println("请输性别 男--1 女--0");
int sex = sc.nextInt();
if(sex==1){
System.out.println("yes");
}else{
System.out.println("no");
}
}else{
System.out.println("no");
}
}
}

import java.util.Scanner;
public class TestIf06{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = sc.nextInt();
if(age>7){
System.out.println("yes");
}else if(age>5){
System.out.println("请输性别: 男 女");
String input = sc.next();
char sex = input.charAt(0);
if(sex=='男'){
System.out.println("yes");
}else{
System.out.println("no");
}
}else{
System.out.println("no");
}
}
}
5 switch语句
实现一个功能:
根据给出的学生分数,判断学生的等级:
>=90 -----A
>=80 -----B
>=70 -----C
>=60 -----D
<60 -----E
import java.util.Scanner;
public class TestIf07{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数:");
int score = sc.nextInt();
/*
if (score>=90){
System.out.println("A");
}else if(score>=80){
System.out.println("B");
}
*/
switch(score/10){
case 10:System.out.println("A");break;
case 9:System.out.println("B");break;
case 8:System.out.println("C");break;
case 7:System.out.println("D");break;
case 6:System.out.println("E");break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
default:System.out.println("成绩输入错误");
}
/*
【4】为了防止代码的“穿透”效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束了
【5】类似else的“兜底”“备胎”的分支:default分支
*/
}
}
6. while循环
引入:
public class TestWhile01{
public static void main(String[] args){
// 实现1+2+3+4+5
int num = 1;
int sum = 0;
sum += num; //0+1
num++;//2
sum += num; //0+1+2
num++;//3
sum += num; //0+1+2+3
num++;//4
sum += num; //0+1+2+3+4
num++;//5
sum += num; //0+1+2+3+4+5
System.out.println("sum:"+sum);
}
}
循环4要素:
public class TestWhile02{
public static void main(String[] args){
// 实现1+2+3+4+5
int num = 1;//[1]初始化
int sum = 0;
while(num<=5){//[2]条件判断
sum+=num;//[3]循环体
num++;//[4]迭代
}
System.out.println("sum:"+sum);
}
}
[1]四要素:条件初始化 条件判断 循环体 迭代
[2]执行过程 [1][2][3][4]-->[2][3][4]-->[2][3][4]...
[3]详细过程
num=1, sum=0
准备开始执行第一次循环,判断num<=5-->true--{}执行:sum:1,num:2,第一次循环结束
准备开始执行第二次循环,判断num<=5-->true--{}执行:sum:1+2,num:3,第二次循环结束
准备开始执行第三次循环,判断num<=5-->true--{}执行:sum:1+2+3,num:4,第三次循环结束
准备开始执行第四次循环,判断num<=5-->true--{}执行:sum:1+2+3+4,num:5,第四次循环结束
准备开始执行第五次循环,判断num<=5-->true--{}执行:sum:1+2+3+4+5,num:6,第四次循环结束
准备开始执行第六次循环,判断num<=5-->false--{}不执行,循环结束,
练习:
【1】1+2+3+4+5+。。。。+100
【2】2+4+6+8+。。。。+998+1000
【3】5+10+15+20+。。。+100
【4】99+97+95+。。5+3+1
【5】135791113
public class TestWhile03{
public static void main(String[] args){
//【1】1+2+3+4+5+。。。。+100
int i = 1;
int sum = 0;
while(i<=100){
sum +=i;
i++;
}
System.out.println("结果:"+sum);
//【2】2+4+6+8+。。。。+998+1000
i = 2;
sum = 0;
while(i<=100){
sum +=i;
i+=2;
}
System.out.println("结果:"+sum);
//【3】5+10+15+20+。。。+100
i = 15;
sum = 0;
while(i<=100){
sum +=i;
i+=5;
}
System.out.println("结果:"+sum);
//【4】99+97+95+。。5+3+1
i = 99;
sum = 0;
while(i>=1){
sum+=i;
i-=2;
}
System.out.println("结果:"+sum);
//【5】1*3*5*7*9*11*13
i = 1;
sum = 1;
while(i<=13){
sum*=i;
i+=2;
}
System.out.println("结果:"+sum);
}
}
do-while循环
使用场景: 先要考试 等出了结果 才知道要不要参加下一次考试
循环体 先要执行一遍 再去判断条件
--条件true 继续进入下一次循环
--条件false退出循环
do{考试
}while(通过
)
7. for循环
for(条件初始化;条件判断;迭代){
循环体
}
public class TestFor01{
public static void main(String[] args){
// 1+2+3+4+5
int sum = 0;
for(int i=0;i<=5;i++){
sum+=i;
}
System.out.println("sum:"+sum);
}
}
8. break continue return关键字的使用
8.1 break 退出循环
练习:
public class TestFor02{
public static void main(String[] args){
// 求和 1—+2+3...+100 当和第一次超过300时退出循环
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
if(sum>300){
break;
}
System.out.println("sum:"+sum);
}
}
}
public class TestFor03{
public static void main(String[] args){
// 求和 1—+2+3...+100 当和i=36退出循环
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
System.out.println("i:"+i);
if(i==36){//如果改成while
break;
}
}
}
}
public class TestFor03{
public static void main(String[] args){
// 求和 1—+2+3...+100 当和i=36退出循环
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
System.out.println("i:"+i);
while(i==36){
break;// 注意这里只会break while循环 for循环不受影响
}
}
}
}
结果:0-100全部打印
break的打标签使用
public class TestFor04{
public static void main(String[] args){
// 求和 1—+2+3...+100 当和i=36退出循环
int sum = 0;
outer: //给这个for循环打标签
for(int i=0;i<=100;i++){
sum+=i;
System.out.println("i:"+i);
while(i==36){
break outer; //根据标签停止
}
}
}
}
结果:只输出 0-36
8.2 continue 退出本次迭代
1-->100输出能被6整除的数
public class TestFor05{
public static void main(String[] args){
// 1 2 3...100 只输出能被6整除的数
int sum = 0;
outer: //给这个for循环打标签
for(int i=0;i<=100;i++){
sum+=i;
if(i%6==0){
System.out.println("i:"+i);
}
}
}
}
方式2;不能被6整除的就continue 不打印
public class TestFor05{
public static void main(String[] args){
// 1 2 3...100 只输出能被6整除的数
int sum = 0;
outer: //给这个for循环打标签
for(int i=0;i<=100;i++){
sum+=i;
if(i%6!=0){
continue;
}
System.out.println("i:"+i);
}
}
}
public class TestFor06{
public static void main(String[] args){
// 1 2 3 100 当和i=36 continue
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
if(i==36){
continue;
}
System.out.println("i:"+i);
}
}
}
结果: 36没打印出来
public class TestFor06{
public static void main(String[] args){
// 1 2 3 100 当和i=36 continue
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
while(i==36){
System.out.println("---->i:"+i);
continue;
}
System.out.println("i:"+i);
}
}
}
结果: 0-35打印出来 36死循环
8.3 return 退出方法的执行
public class TestFor06{
public static void main(String[] args){
// 1 2 3 100 当和i=36 return
int sum = 0;
for(int i=0;i<=100;i++){
sum+=i;
if(i==36){
System.out.println("-----");
return;
}
System.out.println("i:"+i);
}
}
}
结果:0-35打印 36只打印--- 退出
9. 练习
9.1 打印1-100能被5整除的数 每行输出6个数
public class TestFor07{
public static void main(String[] args){
// 打印1-100能被5整除的数 每行输出6个数
int count= 0;
for(int i=1;i<=100;i++){
if(i%5==0){
System.out.print(i+"\t");
if (count%6==0){
System.out.println();
}
count++;
}
}
}
}

9.2 练习
import java.util.Scanner;
public class TestFor08{
public static void main(String[] args){
/*
【1】请录入10个整数,当输入的数是666的时候,退出程序--(被迫退出)。
【2】判断其中录入正数的个数并输出。
【3】判断系统的退出状态:是正常退出还是被迫退出。
*/
boolean flag=true;//默认正常退出
int count = 0;
for(int i=1;i<=10;i++){
Scanner sc = new Scanner(System.in);
System.out.println("请第"+i+"次输入整数:");
int num = sc.nextInt();
if(num>0){
count++;
}
if(num==666){
//System.out.println("被迫退出");
flag = false;
break;
}
}
System.out.println("正数的个数:"+count);
System.out.println(flag?"正常退出":"被迫退出");
}
}

9.3 打印乘法口诀
public class TestFor09{
public static void main(String[] args){
for(int j=1;j<=9;j++){
// 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
for(int i=1;i<=j;i++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
for(int j=9;j>=1;j--){
// 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
for(int i=1;i<=j;i++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}
9.4 打印各种形状
打印 49 由组成的正方形
public class TestFor10{
public static void main(String[] args){
for(int j=1;j<=4;j++){
for(int i=1;i<=9;i++){
System.out.print("*");
}
System.out.println();
}
}
}

前面有5个空格
public class TestFor10{
public static void main(String[] args){
for(int j=1;j<=4;j++){
for(int i=1;i<=5;i++){
System.out.print(" ");
}
for(int i=1;i<=9;i++){
System.out.print("*");
}
System.out.println();
}
}
}

打印平行四边形
public class TestFor10{
public static void main(String[] args){
/* 空格数
********* 5
********* 4
********* 3
********** 2
*/
for(int j=1;j<=4;j++){
for(int i=1;i<=6-j;i++){
System.out.print(" ");
}
for(int i=1;i<=9;i++){
System.out.print("*");
}
System.out.println();
}
}
}

三角形
public class TestFor11{
public static void main(String[] args){
/* *个数 行数
* 1 1
*** 3 2
***** 5 3
******* 7 4
*/
for(int j=1;j<=4;j++){
for(int i=1;i<=6-j;i++){
System.out.print(" ");
}
for(int i=1;i<=2*j-1;i++){
System.out.print("*");
}
System.out.println();
}
}
}

棱形
public class TestFor12{
public static void main(String[] args){
/* *个数 行数 空格
* 1 1
*** 3 2
***** 5 3
******* 7 4
***** 5 1 3
*** 3 2 4
* 1 3 5
j 7-2*j
*/
for(int j=1;j<=4;j++){
for(int i=1;i<=6-j;i++){
System.out.print(" ");
}
for(int i=1;i<=2*j-1;i++){
System.out.print("*");
}
System.out.println();
}
for(int j=1;j<=3;j++){
for(int i=1;i<=j+2;i++){
System.out.print(" ");
}
for(int i=1;i<=7-2*j;i++){
System.out.print("*");
}
System.out.println();
}
}
}

空心棱形
public class TestFor12{
public static void main(String[] args){
/* *个数 行数 空格
* 1 1
*** 3 2
***** 5 3
******* 7 4
***** 5 1 3
*** 3 2 4
* 1 3 5
j 7-2*j
*/
for(int j=1;j<=4;j++){
for(int i=1;i<=6-j;i++){
System.out.print(" ");
}
for(int i=1;i<=2*j-1;i++){
if(i==1||i==(2*j-1)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
for(int j=1;j<=3;j++){
for(int i=1;i<=j+2;i++){
System.out.print(" ");
}
for(int i=1;i<=7-2*j;i++){
if(i==1||i==(7-2*j)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}

10. 打印菱形的另外一种方式
待补充
11. 百钱买百鸡
待补充
java基础-流程控制-day04的更多相关文章
- Java基础-流程控制(04)
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...
- java基础 流程控制和条件语句,循环语句
顺序结构 程序的顺序结构: 如果代码里没有流程控制,程序是按照书写的格式从上而下一行一行执行的, 一条语句执行完之后继续执行下一条语句,中间没有判断和跳转,直到程序的结束. if语句 if语句使用bo ...
- java 基础 流程控制
鄙人不才,基础不好,趁着闲时简单学习一下,仅作学习分享,如有不正确地方还请各位看客不吝指出. Java流程主要可以分为: 顺序(可以按照正常顺序一步步往下运行的) 选择(三元操作符[?:];if el ...
- Java编程基础——流程控制
Java编程基础——流程控制 摘要:本文主要介绍Java编程中的流程控制语句. 分类 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下三种: 顺序结构:从上到下依次执行每条语句操作 ...
- Java的流程控制和C++的异同
Java的流程控制和C++基本相似 现将不同的地方总结一下,以便快速掌握. Java的特殊流程控制的特殊部分: 1.顺序结构 -- 没有区别 2.分之结构 -- 没有区别 3.循环结构 1> ...
- 小白学 Python(8):基础流程控制(下)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- Java学习--流程控制
Java学习 流程控制 用户交互Scanner Scanner对象 Java通过Scanner类获取用户的输入 基本语法: Scanner scanner = new Scanner(System.i ...
- Java程序流程控制之if-else if-else
java基础之流程控制(一) 流程控制 Flow Control : 流程控制语句是编程语言中的核心之一.可以分为 分支语句.循环语句和跳转语句. 本讲内容包括分支语句 ...
- 黑马程序员——C语言基础 流程控制 选择结构和循环结构
---恢复内容开始--- Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)流程控制 1> 顺序结构:默认的流程 ...
- Python基础—流程控制
一.Python流程控制 计算机程序在解决某个具体问题时,包括三种情形,即顺序执行所有的语句.选择执行部分的语句和循环执行部分语句,这正好对应着程序设计中的三种程序执行结构流程:顺序结构.选择结构和循 ...
随机推荐
- 搭建前端项目时出现了.../dist/index.mjs:128 if (!require.cache) { ^ ReferenceError: require is not defined...
具体报错如下: 修改node_modules/vite-plugin-mock/dist/index.mjs 加入如下内容 // 解决报错问题 import { createRequire } fro ...
- Codeforces Round #426 (Div. 2) problem C
C. The Meaningless Game time limit per test 1 second memory limit per test 256 megabytes input stand ...
- Shell下处理JSON数据工具向导
目录 下载离线安装包 安装 源码包安装 选项及含义 JQ 程序代码演示在线平台 JQ 语法 基本过滤器 身份运算符 --- . 标识符-索引 --- .foo`, `.foo.bar 对象索引 --- ...
- 数字孪生融合GIS系统将为交通领域带来什么改变?
随着科技的不断发展,数字孪生和GIS技术正成为交通领域的新宠.数字孪生是指通过数学建模.数据采集和实时仿真等技术手段,将实体世界与数字世界相互关联,形成一个全新的虚拟系统.而GIS(地理信息系统)则是 ...
- MinIO客户端之tree
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc tree 使用树的形式,输出桶内的目录和文件. ./mc tree --files local1/bkt1 ...
- STM32CubeMX教程3 GPIO输入 - 按键响应
1.准备材料 开发板(STM32F407G-DISC1) ST-LINK/V2驱动 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) 2 ...
- Android开发之账号密码登录跳转、固定时间显示进度条实现
登陆界面.登陆跳转和进度条功能实现 首先打开Android studio新建一个空项目,打开layout文件夹下的activity_main.xml文件,来设置登陆界面的布局.登陆界面需要两个输入框, ...
- POJ 3537 Crosses and Crosses 博弈论 SG函数 记忆化搜索
原题链接 题意 两人在一个长为n * 1的棋盘上下棋,两人持相同棋子,如果某人下完之后,棋盘上有三个棋子相连,则此人获胜.给出n,求是否先手必胜. 思路 一开始分析成了最少取3个,最多取5个的巴什博弈 ...
- .NET技术分享日活动-202202
2022年02月19日下午,个人组织举办了山东地区的第四次.NET技术分享日活动.主要包含.NET常用技术.低代码.大前端.大数据和工作流等五个技术领域. 本次技术分享日活动面向了山东地区广大的.NE ...
- SaaS 营销,如何利用 RPA 实现自动化获客?
大家好,这次给大家带来如何利用 RPA 实现自动化获客. 一.RPA 是什么?难吗? RPA 对大家来说,可能挺陌生的,其实它很简单. Robotic Process Automation(简称 RP ...