当前位置: 首页 > news >正文

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 {@Testpublic 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              不及格*/@Testpublic void test2(){//你想表达什么意思就起成什么名字//int score = 9;//通过Scanner可以实现从控制台输入信息//对于<0和>100的数据,打印“这是非法输入”Scanner scanner = new Scanner(System.in);System.out.println("请输入成绩:");int score = scanner.nextInt();//卫语句1if (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);//3030System.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,kfor (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-100int num = random.nextInt(100) + 1;
}

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

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

在这里插入图片描述

3、双重for循环

在这里插入图片描述

双重for循环:

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

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

@Testpublic 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("*");}}@Testpublic 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();}}//    *
//    **
//    ***
//    ****
//    *****@Testpublic void test545() {// i=1 j=1// i=2 j=2// i=3 j=3for (int i = 1; i <= 5; i++) {for (int j = 1; j <= i; j++) {System.out.print("*");}System.out.println();}}@Testpublic 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的阶乘
http://www.lryc.cn/news/481987.html

相关文章:

  • 萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
  • 【多线程】线程池如何知道一个线程的任务已经完成
  • Transformer介绍(一)
  • [CKS] TLS Secrets创建与挂载
  • java双向链表解析实现双向链表的创建含代码
  • 【Kafka-go】golang的kafka应用
  • redis:set集合命令,内部编码,使用场景
  • 45期代码随想录算法营总结
  • 深入理解Java中的instanceof关键字及接口新特性:方法实现的可能性
  • 【python中如果class没有self会怎行】
  • 【算法】(Python)动态规划
  • EasyExcel 学习之 导出 “提示问题”
  • 应用系统开发(3)低功耗四运算放大器LM324N
  • 基于微信小程序的电商平台+LW示例参考
  • [Android] Graphic Buffer 的申请
  • 【大数据学习 | HBASE高级】storeFile文件的合并
  • 多平台编包动态引入依赖的解决方案
  • [单例模式]
  • 速盾:游戏盾的功能和原理详解
  • Spleeter:音频分离的革命性工具
  • 【笔记】自动驾驶预测与决策规划_Part6_不确定性感知的决策过程
  • openresty入门教程:access_by_lua_block
  • Caused by: org.apache.flink.api.common.io.ParseException: Row too short:
  • hbase的安装与简单操作
  • PySpark本地开发环境搭建
  • 【进阶】Stable Diffusion 插件 Controlnet 安装使用教程(图像精准控制)
  • 调试、发布自己的 npm 包
  • 拓扑学与DNA双螺旋结构的奇妙连接:从算法到分子模拟
  • mysql数据库(四)单表查询
  • JavaEE初阶---properties类+反射+注解