Java从入门到“放弃”(精通)之旅——程序逻辑控制④

发布于:2025-04-14 ⋅ 阅读:(17) ⋅ 点赞:(0)

Java从入门到“放弃”(精通)之旅🚀:程序逻辑的完美理解

一、开篇:程序员的"人生选择"

曾经的我,生活就像一段顺序执行的代码:

System.out.println("早上8:00起床");
System.out.println("洗漱");
System.out.println("吃早饭");
// ... 重复枯燥的生活

直到某天,我的代码里加入了分支结构

if(不好好学习){
   System.out.println("可能要卖红薯🍠");
}else{
   System.out.println("好好学习,走上人生巅峰💪");
}

从此,我的生活变成了充满循环的奋斗史:

while(活着){
   学习();
   敲代码();
   刷题();
   if(竞赛拿奖){
       Score++;
   }
}

二、顺序结构:代码界的"直男"

在这里插入图片描述

顺序结构就像直男的思维——简单直接,一步一个脚印:

System.out.println("第一步:起床");
System.out.println("第二步:打开IDE");
System.out.println("第三步:假装自己在学习");

⚠️ 警告:千万别把第三步放到第一步前面,除非你想体验"梦中编程"的快乐。

三、分支结构:程序员的"选择困难症"

在这里插入图片描述

1. if语句:人生处处是选择

if(熬夜时间 == 0){
    System.out.println("养生学霸型:早睡早起,成绩优异");
}else if(熬夜时间 <= 2){
    System.out.println("普通学生型:偶尔熬夜,生活规律");
}else if(熬夜时间 <= 4){
    System.out.println("期末冲刺型:咖啡续命,笔记飞起");
}else if(熬夜时间 <= 6){
    System.out.println("DDL战士型:生死时速,键盘冒烟");
}else{
    System.out.println("修仙大佬型:见过凌晨四点的校园吗?天天见!");
}

2. switch语句:多选项的烦恼

switch(减压方式){
    case "写代码":
        System.out.println("这算减压?");
        break;
    case "改bug":
        System.out.println("这明明是增压!");
        break;
    default:
        System.out.println("还是熬夜吧");
}

🎓 冷知识:switch不支持long类型,就像程序员不支持长时间不写代码一样

四、循环结构:程序员的"复读机模式"

在这里插入图片描述

1. while循环:bug改不完的绝望

while(bug存在){
    System.out.println("我再改最后一个bug");
    // 此处应有break,但程序员总是忘记
}

2. for循环:优雅的计数君

for(int i=1; i<=熬夜天数; i++){
    System.out.println("第" + i + "天熬夜复习");
    
    if(i == 3){
        System.out.println("⚠️ 警告:黑眼圈已形成");
    }
    else if(i == 5){
        System.out.println("⚠️⚠️ 严重警告:开始靠咖啡续命");
    }
    else if(i == 7){
        System.out.println("💀 系统提示:您的健康值即将耗尽");
    }
    
    if(熬夜天数 >= 10){
        System.out.println("🎓 成就解锁:获得『考试周生存专家』称号!");
        break;
    }
}

3. do-while循环:至少执行一次的倔强

do{
    System.out.println("我保证这是最后一次熬夜");
}while(咖啡因还起作用);

五、控制语句:程序员的"后悔药"

1. break:及时止损

while(上课中){
    if(老师突然点名提问){
        System.out.println("【系统警报】检测到危险信号!");
        System.out.println("执行紧急预案:");
        System.out.println("1. 低头假装记笔记");
        System.out.println("2. 眼神躲避术启动");
        System.out.println("3. 默念'不要点我'");
        break; // 终止当前危机
    }
}

2. continue:选择性失忆

for(一天中的时间){
    if(是睡觉时间){
        continue; // 跳过睡觉,继续coding
    }
    写代码();
}

六、实战演练:猜数字游戏 🎮

import java.util.Random;
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        Random random = new Random();
        Scanner sc = new Scanner(System.in);
        int target = random.nextInt(100) + 1; // 1-100的随机数
        System.out.println("欢迎来到猜数字游戏!(开发者已偷偷把答案设为:" + target + ")");
        
        while(true){
            System.out.println("请输入你的猜测(1-100):");
            int guess = sc.nextInt();
            
            if(guess < target){
                System.out.println("猜小了,再大胆点!");
            }else if(guess > target){
                System.out.println("猜大了,收着点!");
            }else{
                System.out.println("恭喜你猜对了!奖励一朵小红花🌸");
                break;
            }
        }
        sc.close();
    }
}

💡 彩蛋:把注释掉的System.out.println("toGuess: " + toGuess);取消注释,你就是游戏界的"内部人员"了!

七、练习题:程序员的"脑力激荡"

  1. 年龄分段器:输入年龄自动输出你是少年/青年/中年/老年(温馨提示:慎测程> 序员年龄)
import java.util.Scanner;

public class AgeClassifier {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你的年龄:");
        int age = scanner.nextInt();
        
        if (age < 0) {
            System.out.println("年龄不能为负数!");
        } else if (age <= 18) {
            System.out.println("少年:青春无敌,好好学习!");
        } else if (age <= 28) {
            System.out.println("青年:奋斗的黄金时期,加油!");
        } else if (age <= 55) {
            System.out.println("中年:家庭事业双丰收的阶段");
        } else {
            System.out.println("老年:享受生活,保持健康");
        }
        
        scanner.close();
    }
}
  1. 素数鉴定师:判断一个数是否为素数(数学老师看了都点赞)
import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int num = scanner.nextInt();
        
        if (num <= 1) {
            System.out.println(num + " 不是素数");
            return;
        }
        
        boolean isPrime = true;
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                isPrime = false;
                break;
            }
        }
        
        if (isPrime) {
            System.out.println(num + " 是素数");
        } else {
            System.out.println(num + " 不是素数");
        }
        
        scanner.close();
    }
}   
  1. 闰年探测器:找出1000-2000年所有闰年(历史学家都说好)
在这里插入代码片public class LeapYearFinder {
   public static void main(String[] args) {
       System.out.println("1000-2000年之间的闰年有:");
       int count = 0;
       
       for (int year = 1000; year <= 2000; year++) {
           if (isLeapYear(year)) {
               System.out.print(year + " ");
               count++;
               if (count % 10 == 0) { // 每10个换一行
                   System.out.println();
               }
           }
       }
       
       System.out.println("\n共计:" + count + "个闰年");
   }
   
   // 判断闰年的方法
   public static boolean isLeapYear(int year) {
       return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
   }
}
  1. 水仙花数:找出所有水仙花数(比真花还难找的数字)
public class NarcissisticNumber {
    public static void main(String[] args) {
        System.out.println("所有的三位数水仙花数:");
        
        for (int num = 100; num < 1000; num++) {
            int hundreds = num / 100;
            int tens = (num / 10) % 10;
            int units = num % 10;
            
            // 计算各位数字的立方和
            int sum = (int)(Math.pow(hundreds, 3) + 
                     (int)(Math.pow(tens, 3)) + 
                     (int)(Math.pow(units, 3));
            
            if (sum == num) {
                System.out.println(num + " 是水仙花数");
                System.out.println("验证:" + hundreds + "³ + " + tens + "³ + " + units + "³   = " + sum);
            }
        }
    }
}
  1. 二进制解剖:分析数字的二进制表示(让你看清数字的"本质")
import java.util.Scanner;

public class BinaryAnalyzer {
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       System.out.print("请输入一个整数:");
       int num = scanner.nextInt();
       
       System.out.println("原始数字:" + num);
       System.out.println("二进制表示:" + Integer.toBinaryString(num));
       
       // 计算1的个数
       int count = Integer.bitCount(num);
       System.out.println("二进制中1的个数:" + count);
       
       // 输出奇数位和偶数位
       System.out.print("奇数位(从右往左数,第一位为1):");
       for (int i = 31; i >= 0; i--) {
           if (i % 2 == 0) { // 奇数位(因为从0开始计数)
               System.out.print((num >> i) & 1);
           }
       }
       
       System.out.print("\n偶数位:");
       for (int i = 31; i >= 0; i--) {
           if (i % 2 == 1) { // 偶数位
               System.out.print((num >> i) & 1);
           }
       }
       
       scanner.close();
   }
}

八、关于一些格式化字符串

在这里插入图片描述

九、结语:代码如人生

记住,编程就像人生:

  • 顺序执行是基础
  • 分支选择决定方向
  • 循环坚持才能成功
  • 偶尔break是为了更好的continue

🔑🔑🔑

while(活着){
    学习();
    进步();
    if(遇到bug){
        解决它();
    }else{
        制造bug(); // 这样才能进步
    }
}

在这里插入图片描述
JavaSE往期专栏

在这里插入图片描述