Java中的逻辑控制与方法(上)

简介: Java中的逻辑控制与方法(上)

🚀1.了解方法的使用


在讲解知识点的过程中会用代码实例来强化理解

一 逻辑控制


a.顺序结构


这个很简单,就是代码从上到下依次执行,没有啥要说的


b.选择结构


选择结构包括呢,有if(){},if(){} else(),还有if(){}else if(){}else{}

选择结构得跟布尔表达式,不然编译器就会报错

选择结构只能实现一个

话不多说,上代码


/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2022-04-26
 * Time: 9:53
 */
public class TestDemo {
    public static void main(String[] args) {
        int x=10;
        int y=20;
        if(x==20){
            if (y==20){
                System.out.println("you are a pig");
            }
            else{
                System.out.println("you are not a pig");
            }
        }
    }
}
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2022-04-26
 * Time: 9:53
 */
public class TestDemo {
    public static void main(String[] args) {
        int x=10;
        int y=20;
        if(x==20)
            if (y==20)
                System.out.println("you are a pig");
            else
                System.out.println("you are not a pig");
    }
}


大家看这两个代码,唯一的区别就是没有括号,看看俩段代码的结果是一样的吗?

答案是一样的,但是肯定会有做错的,因为这个括号很重要,不管你会不会判断,在初学阶段要加上括号

答案就是啥也不打印 ,第一个if中判断结果为false,所以啥也不执行

判断平年闰年的代码

在写这个代码之前,要知道什么是闰年,什么是平年

普通闰年:公历年份是4的倍数,且不是一百的倍数的,为闰年

世纪闰年:公历是100的倍数,也是400的倍数,为闰年


public class TestDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //处理数据的多组输入
        while (scan.hasNext()) {
            int year = scan.nextInt();
            if (year % 100 == 0) {
                if (year % 400 == 0) {
                    System.out.println(year + "是闰年");
                } else {
                    System.out.println(year + "不是闰年");
                }
            }
                else{
                    if (year % 4 == 0) {
                        System.out.println(year + "是闰年");
                    } else {
                        System.out.println(year + "不是闰年");
                    }
                }
            }
        }


三  循环结构与switch    case 语句

a.   switch    case 语句

不能做switch的参数的类型有哪些

long float double boolean


public static void main3(String[] args) {
        String  a = "hello";//字符串是可以的  以后学习的枚举也是可以的
        //int a = 10;
        switch (a) {
            case "hello":
                System.out.println("hello");
                break;
            case "hello2":
                System.out.println("2");
                break;
            default:
                System.out.println("输入错误!");
                break;
        }
    }


要注意,Switch   case中case的类型要与Switch的类型相对应

b.循环结构

循环结构有while,do{}while();   for循环

下面,我来一个一个讲解

while结构

while(),括号中也是跟着布尔表达式


public class TestDemo {
    /**
     * 算出1-100间1-100的和,偶数和,奇数和
     * @param args
     */
    public static void main4(String[] args) {
        int sum = 0;//保存1-100的和
        int sumEve = 0;//保存1-100偶数的和
        int sumOdd = 0;//保存1-100奇数的和
        int i = 1;
        while (i <= 100) {
            sum += i;
            i++;
        }
        i = 2;//重新要赋值  上面已经加到了101了
        while (i <= 100) {
            sumEve += i;
            i+=2;//步进
        }
        i = 1;//重新要赋值
        while (i <= 100) {
            sumOdd += i;
            i+=2;//步进  不仅仅是i++;
        }
        System.out.println(sum);
        System.out.println(sumEve);
        System.out.println(sumOdd);
    }


 /**
     * 算出5!的阶乘
     * @param args
     */
public static void main5(String[] args) {
        int i = 1;
        int ret = 1;
        while (i <= 5) {
            ret = ret * i;
            i++;
        }
        System.out.println(ret);
    }
/**
     * 求5的阶乘的和=1!+2!+3!+4!+5!
     * @param args
     */
    public static void main7(String[] args) {
        int j = 1;
        int sum = 0;
        while (j <= 5) {
            int i = 1;
            int ret = 1;
            while (i <= j) {
                ret = ret * i;
                i++;
            }
            sum += ret;
            j++;
        }
        System.out.println(sum);
    }
 public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的姓名");
        String str=scanner.nextLine();//读入一个字符串
        System.out.println(str);
        System.out.println("请输入你的年龄");
        int age=scanner.nextInt();//读入一个整数
        System.out.println(age);
        System.out.println("请输入你的工资");
        float money=scanner.nextFloat();//读入一个浮点数
        System.out.println(money);
    }
 /**
     * 描述了Java中输出的几个表达
     * @param args
     */
    public static void main7(String[] args) {
        System.out.println("输出且换行!");
        System.out.print("输出且不换行!");
        System.out.printf("%s\n","真的没换行吗?");
    }
/**
 *
 * 猜数字游戏
 */
public class TestDemo {
    public static void main9(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random(5220);//这里的seed和bound是系统自动生成的。
        int randNum = random.nextInt(101);//[0,101)==>[0,100]
        System.out.println("随机数是" + randNum);//生成的随机数是不一样的,是根据时间戳来生成的
        //int randNum = random.nextInt(100)+1;//[1,101)  数学的思维:50-100
        // int rand = (int) Math.random();
        //int randNum = random.nextInt();
        while (true) {
            System.out.println("请输入你要猜的数字:");
            int num = scanner.nextInt();
            if (num < randNum) {
                System.out.println("猜小了!");
            } else if (num == randNum) {
                System.out.println("猜对了!");
                break;
            } else {
                System.out.println("猜大了!");
            }
        }
    }


b.  do  while循环结构一般不咋用,就不做详细描述了

c.for  循环

与C语言中的for循环并没有很大差别

四     方法的使用

方法就是函数


/**
 * 方法调用实现代码求两数和
 */
public class TestDemo {
    public static int add(int a, int b) {
        System.out.println("正在调用add()");
        return a+b;
    }
    public static void main10(String[] args) {
        int a=10;
        int b=20;
        int ret=add(a,b);
        System.out.println(ret);
    }
/**
 * 求阶乘
 */
public class TestDemo {
    public static int fac(int n) {
        int ret = 1;
        for (int i = 1; i <= n; i++) {//这段代码是实现某个数的阶乘
            ret *= i;
        }
        return ret;
    }
    /**
     * 求1!+2!+......+k!
     * @param k
     * @return
     */
    public static int facSum(int k) {
        int sum = 0;
        for (int i = 1; i <= k; i++) {//这段代码是实现几个数的阶乘和的代码
            sum += fac(i);
        }
        return sum;
    }
    public static void main(String[] args) {//调用
        System.out.println(facSum(5));//5就是有几个数的和
    }

小魏亲笔,求点关注!谢谢🌹🌹🌹  

以上就是今天的分享,我们下期再见!886

相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
100 9
|
2天前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
60 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
83 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
32 1
|
3月前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
73 17
|
2月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
149 4
|
2月前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
450 2
|
2月前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
168 0