首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

【Javase】逻辑控制

  • 25-03-07 23:21
  • 3935
  • 10299
blog.csdn.net

前言

上一篇博客主要介绍了Java运算符的相关知识。

【javase】运算符-CSDN博客

本篇博客将学习Java逻辑控制的相关知识,了解程序运行时的逻辑结果,掌握Java输入输出的方式,并结合起来,完成一个案例,加深理解。


一.顺序结构

顺序结构,顾名思义,按照代码书写的顺序一行一行执行。

  1. System.out.println("aaa");
  2. System.out.println("bbb");
  3. System.out.println("ccc");
  4. // 运行结果
  5. aaa
  6. bbb
  7. ccc

如果调整代码的书写顺序,则执行顺序也会发生变化。

  1. System.out.println("aaa");
  2. System.out.println("ccc");
  3. System.out.println("bbb");
  4. // 运行结果
  5. aaa
  6. ccc
  7. bbb

二.分支结构

1.if语句

1)单if格式

if ( 布尔表达式 ){
// 语句
}

如果布尔表达式中的结果为true,则会执行{ }内的语句;

如果布尔表达式中的结果为false,则会跳过{ }内的语句。

2)if…else格式

if ( 布尔表达式 ){
// 语句 1
} else {
// 语句 2
}

如果布尔表达式结果为true,则执行if中的语句;

否则,执行else中的语句。

例如:若小明成绩在90分以上,则奖励鸡腿,否则奖励大嘴巴子。

  1. int score = 92;
  2. if(score >= 90){
  3. System.out.println("吃个大鸡腿!!!");
  4. }else{
  5. System.out.println("挨大嘴巴子!!!");
  6. }

3)if...else if...else格式

有时,事情发展的分支可能会不止两种,只有if...else不能详细的描述发生的状况。

else if 可以描述更多更精细的场景。

if ( 布尔表达式 1 ){
// 语句 1
} else if ( 布尔表达式 2 ){
// 语句 2
} else {
// 语句 3
}

表达式1成立,执行语句1,否则表达式2成立,执行语句2,否则执行语句3

例如:考虑到学生自尊,不公开分数排名,因此

分数在 [90, 100] 之间的为优秀

分数在 [80, 90) 之前的为良好

分数在 [70, 80) 之间的为中等

分数在 [60, 70) 之间的为及格

分数在 [ 0, 60) 之间的为不及格

错误数据

代码如下:

  1. if(score >= 90){
  2. System.out.println("优秀");
  3. }else if(score >= 80 && score < 90){
  4. System.out.println("良好");
  5. }else if(score >= 70 && score < 80){
  6. System.out.println("中等");
  7. }else if(score >= 60 && score < 70){
  8. System.out.println("及格");
  9. }else if(score >= 0 && score < 60){
  10. System.out.println("不及格");
  11. }else{
  12. System.out.println("错误数据");
  13. }

2.switch语句

基本语法

switch ( 表达式 ){
case 常量值 1 :{
语句 1 ;
break;
}
case 常量值 2 :{
语句 2 ;
break;
}
...
default :{
内容都不满足时执行语句 ;
break;
}
}
注意:break并非必写,若缺少break程序会不断向下执行.

执行流程:

  1. 先计算表达式的值
  2. 和case依次比较,一旦有响应的匹配就执行该项下的语句,直到遇到break时结束。
  3. 当表达式的值没有与所列项匹配时,执行default.        

代码示例:根据 day 的值输出星期

  1. int day = 1;
  2. switch(day) {
  3. case 1:
  4. System.out.println("星期一");
  5. break;
  6. case 2:
  7. System.out.println("星期二");
  8. break;
  9. case 3:
  10. System.out.println("星期三");
  11. break;
  12. case 4:
  13. System.out.println("星期四");
  14. break;
  15. case 5:
  16. System.out.println("星期五");
  17. break;
  18. case 6:
  19. System.out.println("星期六");
  20. break;
  21. case 7:
  22. System.out.println("星期日");
  23. break;
  24. default:
  25. System.out.println("输入有误");
  26. break;
  27. }

注意事项:

  • 多个case后的常量值不可以重复
  • switch括号内不能是long类型,也不能说浮点型
  • break 不要遗漏, 否则会失去 "多分支选择" 的效果
  • switch 不能表达复杂的条件
  1. // 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示.
  2. if (num > 10 && num < 20) {
  3. System.out.println("hehe");
  4. }

三.循环结构

1.while循环

基本语法格式:

while ( 循环条件 ){
循环语句 ;
}

循环条件为 true, 则执行循环语句; 否则结束循环.

代码示例:打印1-10的数字

  1. int num = 1;
  2. while (num <= 10) {
  3. System.out.println(num);
  4. num++;
  5. }

注意事项:

  • 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }
  • 和 if 类似, while 后面的 { 建议和 while 写在同一行
  • 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行

2.for循环

基本语法:

for ( 表达式① ; 布尔表达式② ; 表达式③ ){
表达式④ ;
}

注意事项:与while循环类似,不过多赘述.

代码示例:打印1~10的数字

  1. for (int i = 1; i <= 10; i++) {
  2. System.out.println(i);
  3. }

3.break与continue

1)break

break 的功能是让循环提前结束,当代码执行时遇到break,则会立即结束当前循环.

代码示例:找到100~200中第一个3的倍数

  1. int num = 100;
  2. while (num <= 200) {
  3. if (num % 3 == 0) {
  4. System.out.println("找到了 3 的倍数, 为:" + num);
  5. break;
  6. }
  7. num++;
  8. }
  9. // 执行结果
  10. 找到了 3 的倍数, 为:102

2)continue

continue 的功能是跳过这次循环, 立即进入下次循环.

 代码示例:找到100~200中第一个3的倍数

  1. int num = 100;
  2. while (num <= 200) {
  3. if (num % 3 != 0) {
  4. num++; // 这里的 ++ 不要忘记! 否则会死循环.
  5. continue;
  6. }
  7. System.out.println("找到了 3 的倍数, 为:" + num);
  8. num++;
  9. }

 当if中的布尔表达式为真,则会触发continue,跳过当前循环,进入下一次循环.

四.输入与输出

1.输出到控制台

基本语法:

System.out.println(msg); // 输出一个字符串, 带换行

System.out.print(msg); // 输出一个字符串, 不带换行

System.out.printf(format, msg); // 格式化输出

println 输出的内容自带 \n, print 不带 \n

printf 的格式化输出方式和 C 语言的 printf 是基本一致的

2.从键盘输入

使用Scanner读取输入的字符串/整数/浮点数.

当使用Scanner时,会导入util的包.

System.in是一个标准的输入流对象,它通常用于从键盘接收输入.

代码示例:

  1. Scanner sc = new Scanner(System.in);
  2. System.out.println("请输入你的姓名:");
  3. String name = sc.nextLine();
  4. System.out.println("请输入你的年龄:");
  5. int age = sc.nextInt();
  6. System.out.println("请输入你的工资:");
  7. float salary = sc.nextFloat();
  8. System.out.println("你的信息如下:");
  9. System.out.println("姓名: "+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
  10. sc.close(); // 注意, 要记得调用关闭方法
  11. // 执行结果
  12. 请输入你的姓名:
  13. 张三
  14. 请输入你的年龄:
  15. 18
  16. 请输入你的工资:
  17. 1000
  18. 你的信息如下:
  19. 姓名: 张三
  20. 年龄:18
  21. 工资:1000.0

注:当想输入字符串时,可使用nextLine()方法.

当像输入整型时,可使用nextInt()方法.

输入浮点数时,可使用nextFlaot()方法.

五.案例(猜数字游戏)

接下,将上述只是结合起来,写一个猜数字游戏.

思路:首先,我们要生成一个随机数.在Java中,提供了Random类为我们生成随机数.

  1. Random random = new Random(); // 默认随机种子是系统时间
  2. int randomNum = random.nextInt(100);

然后,猜数字游戏需要我们根据提示不断的接近生成的随机数,在这过程中,我们将不断的从输入数据.

猜大时,控制台输出提示我们数字猜大了;

猜小时,控制台输出提示我们数字猜小了;

猜对时,则退出循环.

参考代码如下:

  1. import java.util.Random;
  2. import java.util.Scanner;
  3. public class Test4 {
  4. public static void main(String[] args) {
  5. Scanner scanner=new Scanner(System.in);
  6. Random random=new Random();
  7. Integer randomNum=random.nextInt(100);
  8. while (true){
  9. System.out.println("请输入要猜的数字");
  10. int num= scanner.nextInt();
  11. if(num==randomNum){
  12. System.out.println("恭喜你,猜对了,随机数为 "+randomNum);
  13. break;
  14. }else if(num
  15. System.out.println("猜小了");
  16. }else {
  17. System.out.println("猜大了");
  18. }
  19. }
  20. }
  21. }

我们还可以引入一个计数器,限制猜数字的次数.(这里就不实现了).


以上便是全部内容,如有不对,欢迎指正

注:本文转载自blog.csdn.net的yc_xym的文章"https://blog.csdn.net/yc_xym/article/details/145704593"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

107
Java
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top